Página 1 de 3
Filtro com OrdScope()
Enviado: 21 Mai 2008 19:17
por Grings
A função OrdScope() não funciona com índices compostos ? Preciso indexar um campo data + tipo e filtar um intervalo de datas com um determinado tipo para exibir em um Tbrowse, mas não estou conseguindo.
Nota de Moderação:por
[url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: Mensagem recuperada através de citações de outros usuários. Pois esta mensagem foi re-editada pelo próprio autor apagando o seu conteúdo e prejudicando o entendimento do tópico. Esta prática não é aceita no fórum.
Re: Filtro com OrdScope()
Enviado: 21 Mai 2008 23:17
por sygecom
Grings escreveu:A função OrdScope() não funciona com índices compostos ? Preciso indexar um campo data + tipo e filtar um intervalo de datas com um determinado tipo para exibir em um Tbrowse, mas não estou conseguindo.
Olá Grings,
Funciona sim, abaixo um exemplo:
Código: Selecionar todos
USE RECEBER ALIAS RECEBER SHARED // ABRINDO DBF
INDEX ON DTOS(DATA)+STR(CAIXA,2)+SITUACAO TAG 1 to RECEBER // CRIANDO INDICE ONDE PRIMEIRO CAMPO É DO TIPO DATA,SEGUNDO DO TIPO NUMÉRICO E TERCEIRO CARACTER.
SET INDEX TO RECEBER // ABRINDO INDICE CASO NÃO ESTEJA UNSANDO SET AUTOPEN ON
SELE RECEBER
DBSETORDER(1)
ORDScope(0, DTOS(wDATA)+STR(wCAIXA,2)+"P")
ORDScope(1, DTOS(wDATA)+STR(wCAIXA,2)+"P")
Espero ter ajudado.
Abraços
Leonardo Machado
Enviado: 23 Mai 2008 10:09
por Grings
Não funcionou. Consigo filtrar somente a data, o tipo não, aparecem todos.
Nota de Moderação:por
[url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: Mensagem recuperada através de citações de outros usuários. Pois esta mensagem foi re-editada pelo próprio autor apagando o seu conteúdo e prejudicando o entendimento do tópico. Esta prática não é aceita no fórum.
Re: Filtro com OrdScope()
Enviado: 23 Mai 2008 10:18
por sygecom
Grings escreveu:Não funcionou. Consigo filtrar somente a data, o tipo não, aparecem todos.
Olá Grings,
Post um pequeno exemplo demonstrando seu problema e como você esta fazendo, se esta usando CDX ou que ?
Abraços
Leonardo Machado
Enviado: 23 Mai 2008 11:21
por Grings
OrdScope(0,Dtos(dDataIni), + '1')
OrdScope(1,Dtos(dDataFin), + '1')
Nota de Moderação:por
[url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: Mensagem recuperada através de citações de outros usuários. Pois esta mensagem foi re-editada pelo próprio autor apagando o seu conteúdo e prejudicando o entendimento do tópico. Esta prática não é aceita no fórum.
Re: Filtro com OrdScope()
Enviado: 23 Mai 2008 11:25
por sygecom
Grings escreveu:
OrdScope(0,Dtos(dDataIni), + '1')
OrdScope(1,Dtos(dDataFin), + '1')
Olá Grings,
Voce esta colocando uma virgula a mais, deve fica apenas assim:
OrdScope(0,Dtos(dDataIni) + '1')
OrdScope(1,Dtos(dDataFin) + '1')
.
Enviado: 23 Mai 2008 11:43
por Grings
.
Re: Filtro com OrdScope()
Enviado: 23 Mai 2008 11:56
por sygecom
Grings,
Realmente isso esta muito estranho, como foi demostrado nos topicos acima, eu uso muito tudo isso e não tenho problemas, deve ter alguma outra cosia que não esta sendo prevista, me diga uma coisa esse campo "TIPO" é CARACTER mesmo ou Numérico ?
.
Enviado: 23 Mai 2008 14:37
por Grings
.
Re: Filtro com OrdScope()
Enviado: 23 Mai 2008 17:56
por Hasse
Testei o PRG acima e funcionou CORRETAMENTE, sem qualquer problema.
HBmake - Windows XP SP2 - xHarbour 1.0.0-beta
Com as versões < 0.99.60 >, < 0.99.70 > e < 1.1.0 > também funcionou.
.
Enviado: 23 Mai 2008 18:22
por Grings
.
Re: Filtro com OrdScope()
Enviado: 23 Mai 2008 19:02
por Hasse
Olá Grings.
Veja que o OrdScope() não é um filtro. Nele se estabelece onde está localizado o primeiro registro que atende ao limite e em seguida aquele que atende ao segundo limite. Todos os registros intermediários são apresentados.
Para fazer isto que você precisa é necessário acionar em seguida um Set Filter to, ou DBSetFilter(). Para arquivos pequenos basta usar o filtro, mas para arquivos grande é bom combinar as duas funções que acelera muito o resultado.
O xHarbour também tem uma função de filtro, mas não me lembro do nome dela. Com uma pequena pesquisa certamente você acha.
E se não achar, solta o verbo que a gente te ajuda.
Re: Filtro com OrdScope()
Enviado: 23 Mai 2008 19:12
por MARCELOG
Caro Grings, se você estiver fazendo que nem o Leonardo postou acho que não vai dar certo.
É que ele está criando o índice com o STR, que converte o número em string mas deixa espaços à esquerda.
Se for o caso, use alltrim(str(...)) que vai dar certo.
Verifique o índice ativo com indexkey(0) ou &indexkey(0) para comparar com o filtro que você está realizando.
MarceloG
.
Enviado: 23 Mai 2008 19:28
por Grings
.
Re: Filtro com OrdScope()
Enviado: 23 Mai 2008 20:48
por sygecom
Grings, vc esta com razão seu pequeno exemplo teoricamente funcionaria, pelomenos para min. Mas compile com a versão 1.1.0 e não esta filtrando direito, porem tenho Diversas rotinhas que usam isso, inclusive o exemplo que postei bem no começo foi pego de um filtro de contas a receber meu.