INDEX ON ... WHILE ...
Moderador: Moderadores
-
lenasi
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 02 Set 2004 10:20
- Localização: Ferraz de Vasconcelos - SP
INDEX ON ... WHILE ...
Estou tentando usar o WHILE dentro do INDEX ON, de um exemplo chamado while2.prg que peguei, e adaptando no meu programa não está dando certo. É o seguinte?
A partir de dois COMBOBOX, selecionado um item de cada:
COMBO A E COMBO B
Não ficaria assim ?
SEEK COMBO_A
INDEX ON F_DESCRI TO ARQTMP WHILE ( F_CODREC=COMBO_A .AND. F_CODMED=COMBO_B )
Mas aparece somente os registros conforme o COMBO_A
Preciso que mostre registros referente os dois itens selecionados no COMBOBOX
A partir de dois COMBOBOX, selecionado um item de cada:
COMBO A E COMBO B
Não ficaria assim ?
SEEK COMBO_A
INDEX ON F_DESCRI TO ARQTMP WHILE ( F_CODREC=COMBO_A .AND. F_CODMED=COMBO_B )
Mas aparece somente os registros conforme o COMBO_A
Preciso que mostre registros referente os dois itens selecionados no COMBOBOX
Se vc quer que esse indíce temporário mostre apenas os registros que
contém f_codrec iguais a combo_a e combo_b use FOR e não WHILE.
O WHILE vai indexar os registro a partir da posição e o FOR vai filtrar desde o ínicio do arquivo.
então o seu comando ficaria:
index on f_descri to arqtmp FOR f_codrec = combo_a .AND. f_codrec = combo_b
contém f_codrec iguais a combo_a e combo_b use FOR e não WHILE.
O WHILE vai indexar os registro a partir da posição e o FOR vai filtrar desde o ínicio do arquivo.
então o seu comando ficaria:
index on f_descri to arqtmp FOR f_codrec = combo_a .AND. f_codrec = combo_b
Desculpe o erro.
index on f_descri to arqtmp FOR f_codrec = combo_a .OR. f_codrec = combo_b
se colocar o .AND. o campo f_codrec necessita ter o valor combo_a e combo_b ao mesmo tempo, o que é impossível se combo_a e combo_b forem valores diferentes.
Com o .OR. ele pode ter o valor combo_a ou combo_b para que a condição seja verdadeira.
index on f_descri to arqtmp FOR f_codrec = combo_a .OR. f_codrec = combo_b
se colocar o .AND. o campo f_codrec necessita ter o valor combo_a e combo_b ao mesmo tempo, o que é impossível se combo_a e combo_b forem valores diferentes.
Com o .OR. ele pode ter o valor combo_a ou combo_b para que a condição seja verdadeira.
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
Uai! Mas a expressão inicial continha dois códigos: CODREC e CODMED:
index on f_descri to arqtmp while ( f_codrec=combo_a .and. f_codmed=combo_b )
O colega GVC eliminou o segundo código, o que justifica realmente o uso de .OR. e não .AND.:
index on f_descri to arqtmp for f_codrec = combo_a .or. f_codrec = combo_b
Não está errado?
index on f_descri to arqtmp while ( f_codrec=combo_a .and. f_codmed=combo_b )
O colega GVC eliminou o segundo código, o que justifica realmente o uso de .OR. e não .AND.:
index on f_descri to arqtmp for f_codrec = combo_a .or. f_codrec = combo_b
Não está errado?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
Sempre fui adepto do recurso que a SubNTX provia, mas isto quando usava Clipper e depois em ClipperXFivewin.
Quando passei a usar Harbour, não foi mais possivel usar a SubNTX e passei então a usar CDX e me batia para fazer algo parecido com a SubNTX usando indices condicionais.
Quebrou um galho mas os arquivinhos temporarios gerados eram demais.
Procurei outra forma que foi com o uso do recurso SetScope() e todo o problema acabou.
Hoje uso SetScope() em tabelas gigantescas, depois ainda posso usar o Set Filter no registros filtrados e tudo ficou super bala.
Se vcs ainda usam indices condicionais e não fizeram uso do potencial deste recurso, vão em frente, testem e me digam se não foi legal.
Sempre fui adepto do recurso que a SubNTX provia, mas isto quando usava Clipper e depois em ClipperXFivewin.
Quando passei a usar Harbour, não foi mais possivel usar a SubNTX e passei então a usar CDX e me batia para fazer algo parecido com a SubNTX usando indices condicionais.
Quebrou um galho mas os arquivinhos temporarios gerados eram demais.
Procurei outra forma que foi com o uso do recurso SetScope() e todo o problema acabou.
Hoje uso SetScope() em tabelas gigantescas, depois ainda posso usar o Set Filter no registros filtrados e tudo ficou super bala.
Se vcs ainda usam indices condicionais e não fizeram uso do potencial deste recurso, vão em frente, testem e me digam se não foi legal.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Legal não. Eu diria super-legal. Índices ao estilo CDX, que contém esse recurso de limitação de escopo, permitem uma aceleração drástica do SET FILTER, mesmo em arquivos gigantescos. É ver pra crer. 
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Realmente cometi o crime. Mea culpa. Mestre Maligno esta certo. Mas o FOR para criar indices condicionais funcionam.Maligno escreveu:Uai! Mas a expressão inicial continha dois códigos: CODREC e CODMED:
index on f_descri to arqtmp while ( f_codrec=combo_a .and. f_codmed=combo_b )
O colega GVC eliminou o segundo código, o que justifica realmente o uso de .OR. e não .AND.:
index on f_descri to arqtmp for f_codrec = combo_a .or. f_codrec = combo_b
Não está errado?
O setscope só funciona em CDX. Ou melhor (antes de cometer outro crime) Não funcionam em NTX.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
No caso de ainda usarem NTX o método de escopos pode ser conseguido usando-se a SubNTX, acho até que na sessão download do PCToledo e no site do Maligno voce as encontre.
Caso não me mandem um email com numero da conta e senha(oopssss!) com assunto SUBNTX para irochinha@itelefonica.com.br que devolverei com prazer.
No caso de ainda usarem NTX o método de escopos pode ser conseguido usando-se a SubNTX, acho até que na sessão download do PCToledo e no site do Maligno voce as encontre.
Caso não me mandem um email com numero da conta e senha(oopssss!) com assunto SUBNTX para irochinha@itelefonica.com.br que devolverei com prazer.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.

