Página 1 de 2

LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 12:03
por alaminojunior
Tenho um dbf indexado da seguinte forma:

Código: Selecionar todos

index on descend(dtos(pgrvnc)) tag indpgr02 to indpgr
e depois numa rotina de relatório eu faço o escopo:

Código: Selecionar todos

ordscope(0,descend(dtos(fin)))
ordscope(1,descend(dtos(ini)))
Se utilizar DBFCDX os dados são relacionados corretamente obedecendo o escopo solicitado. Se optar por LetoDB, o escopo é desobedecido, trazendo registros fora do escopo.
Pergunto: existe alguma incompatibilidade entre o LetoDB e funções do tipo ? (Descend, Dtos, etc ...)
Encontrei nos fontes do LetoDB funções como Leto_SetScope() e Leto_Scope(), porém não conseguí decifrar seus parâmetros.

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 12:49
por asimoes
Olá Alamino,

Você chegou a testar Leto_SetScope() e Leto_Scope()?

[]´s

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 13:01
por sygecom
Olá Alamino,
Tente assim:

Código: Selecionar todos

#include "DbInfo.ch"

nCODFOR:=222 // codigo do fornecedor que desejo filtrar
Filtro:
dbOrerInfo(DBOI_SCOPETOP, nCODFOR)
dbOrerInfo(DBOI_SCOPEBOTTOM,nCODFOR)
Limpa Filtro:

Código: Selecionar todos

dbOrerInfo(DBOI_SCOPETOPCLEAR)
dbOrerInfo(DBOI_SCOPEBOTTOMCLEAR)

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 13:03
por alaminojunior
Asimões, a princípio não testei pois não entendí muito bem a função e seus parâmetros. Mas seguindo sua sugestão, incluí as chamadas no lugar de ordscope(), e retornaram erros na compilação, alegando falta da referida função. Acredito que estas funções são usadas internamente pela própria lib, sei lá.
Vamos aguardar para ver se mais alguém tem alguma sugestão.
Por hora, muito obrigado.

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 13:10
por alaminojunior
Então Leo, tentei conforme você sugeriu, mas a menos que eu esteja fazendo errado, não deu certo. Diría até que piorou ... hehehehe.
Antes o escopo era desrespeitado em alguns dias, agora desrespeitou até o ano.

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 13:12
por sygecom
Pelo que vi essas funções estão no lado servidor(source/server/), ou seja, quem executa é o proprio LetoDb. Temos que se ater apenas a FUNCTION do lado cliente, ou seja tudo que está em:
source/client/

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 13:16
por sygecom
alaminojunior escreveu:Então Leo, tentei conforme você sugeriu, mas a menos que eu esteja fazendo errado, não deu certo. Diría até que piorou ... hehehehe.
Antes o escopo era desrespeitado em alguns dias, agora desrespeitou até o ano.
Buenas Dr.
Então temos um BUG ai, temos que reportar um exemplo para o Pai da criança(Alexander) resolver. Qual versão do xHarbour e do LetoDB você está usando ?
E post um exemplo de como está usando para tentar reproduzir o erro aqui.

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 13:46
por alaminojunior
Qual versão do xHarbour e do LetoDB você está usando ?
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6633) (free.xHarbour.com)
Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
LetoDB v0.95 (peguei no Manage.exe)


O índice é criado:

Código: Selecionar todos

index on descend(dtos(pgrvnc)) tag indpgr02 to indpgr
este campo pgrvnc é tipo DATA, óbvio.
se visualizar com:

Código: Selecionar todos

ordscope(0,descend(dtos(fin)))
ordscope(1,descend(dtos(ini)))
o escopo não é obedecido, inclui alguns dias do mês
se for com:

Código: Selecionar todos

dbOrderInfo(DBOI_SCOPETOP,descend(dtos(fin)))
dbOrderInfo(DBOI_SCOPEBOTTOM,descend(dtos(ini)))
Pega todos os registros do dbf.


letodb.ini
[MAIN]
Port = 2812
DataPath = \alamino
Logfile = "letodb.log"
Default_Driver = CDX
Lower_Path = 0
EnableFileFunc = 1
EnableAnyExt = 1
Pass_for_Login = 0
Pass_for_Manage = 0
Pass_for_Data = 0
Crypt_Traffic = 1
cdpgr000.txt
Arquivo DBF em questão. É um .rar renomeado para .txt
(18.32 KiB) Baixado 145 vezes

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 13:56
por sygecom
Alamino,
Faça um teste ai para nós.

Crie o indice assim:

Código: Selecionar todos

index on pgrvnc tag indpgr02 to indpgr
Filtro assim:

Código: Selecionar todos

ordscope(0,fin)
ordscope(1,ini)
ORDDESCEND(,, .T.)
E nos diga o que aconteceu.

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 14:04
por alaminojunior
Dessa maneira aí funcionou certinho ! Inclusive testei também com apenas o Dtos().
Deve ser alguma incompatibilidade com a Descend().

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 14:07
por sygecom
Exato, o problema é nos indice com funções como Descend() ou talvez com funções particulares, eu desde o clipper evitava o uso de funções em INDICE, mas não quer dizer que não tenha que funcionar, vamos postar o problema no Forum do LetoDB do SoureForge.net

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 14:17
por sygecom
Postei lá, espero que algum desenvolvedor possa testar, e já migrar o projeto para SVN. Vamos aguardar.
https://sourceforge.net/projects/letodb ... ic/4094802

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 15:35
por alaminojunior
Eu ví lá.
Vamos aguardar.
Por hora, obrigado mais uma vez.

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 18:21
por alxsts
Olá!

Talvez eu esteja "falando" besteira mas, nos tempos do Clipper, tinhamos que colocar o famoso REQUEST Descend no programa de indexação de arquivos. Como será que o Harbour se comporta com respeito a isto? Creio que seja da mesma forma. Na hora de indexar ele trá que encontrar a função em algum lugar para executar a string de indexação.

Re: LetoDB - Set Scope não está funcionando.

Enviado: 07 Fev 2011 18:34
por sygecom
Olá Alexandre,
Bem lembrado !
Só resta nosso colega Alamino testar se for possível.