Clipper On Line • Ver Tópico - INDEX ON ... WHILE ...

INDEX ON ... WHILE ...

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

INDEX ON ... WHILE ...

Mensagempor lenasi » 23 Set 2004 16:17

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
lenasi
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 02 Set 2004 10:20
Cidade/Estado: Ferraz de Vasconcelos - SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor rochinha » 19 Nov 2004 22:10

Amiguinho

Afinal voce quer filtra quais dados

Se voce quer ver dados que contenham F_CODREC e F_CODMED deverá usar .OR. pois o resultado devolvido será F_CODREC ou F_CODMED.

@braços :?)
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4547
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 807 vezes
Mens.Curtidas: 246 vezes

Mensagempor gvc » 25 Ago 2005 10:15

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 [b]FOR[/b] f_codrec = combo_a [b].AND.[/b] f_codrec = combo_b
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor gvc » 25 Ago 2005 10:22

Desculpe o erro.

index on f_descri to arqtmp [b]FOR[/b] f_codrec = combo_a [b].OR.[/b] 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.
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor ERASMO ANDRIOLI » 12 Fev 2008 22:01

CARA!!!

Essa resposta meu tirou de uma enrascada...

e olha que ela é uma resposta bem antiga...

Eu usava o set filter e meu sistema estava muitissimo lento...

agora ele ficou a jato...

Abraços -:]
Avatar de usuário

ERASMO ANDRIOLI
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 48
Data de registro: 15 Jul 2004 16:15
Cidade/Estado: Sorriso-MT
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Maligno » 12 Fev 2008 22:26

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?
[]'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!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor rochinha » 12 Fev 2008 22:29

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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4547
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 807 vezes
Mens.Curtidas: 246 vezes

Mensagempor Maligno » 12 Fev 2008 22:39

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!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor gvc » 13 Fev 2008 08:46

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?


Realmente cometi o crime. Mea culpa. Mestre Maligno esta certo. Mas o FOR para criar indices condicionais funcionam.
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}
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor rochinha » 13 Fev 2008 11:19

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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4547
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 807 vezes
Mens.Curtidas: 246 vezes




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro