Clipper On Line • Ver Tópico - Indice CDX
Página 1 de 1

Indice CDX

MensagemEnviado: 14 Dez 2005 17:04
por Jarbas
Boa Tarde, alguem saberia me dizer pq isto nao funciona :
Ele so considera o ultimo indice

Request dbfcdx
rddsetdefault("DBFCDX")

USE Notas.Dbf ALIAS NOTA EXCLUSIVE NEW
FOR I:=1 TO 3
INDEX ON NUM_NOTA TAG I TO Notas.cdx
INDEX ON DTOS(DT_EMISSAO)+STR(NUM_NOTA,6) TAG I TO NOTAS.CDX
INDEX ON CGC_CPF+STR(NUM_NOTA,6) TAG I TO NOTAS.CDX
NEXT
ORDSETFOCUS("1")
LIST NUM_NOTA,CGC_CPF,DT_EMISSAO
INKEY(0)
ORDSETFOCUS("2")
LIST DT_EMISSAO,NUM_NOTA,CGC_CPF
INKEY(0)
ORDSETFOCUS("3")
LIST CGC_CPF,NUM_NOTA,DT_EMISSAO
CLOSE ALL

Re: Indice CDX

MensagemEnviado: 14 Dez 2005 17:54
por gvc
[quote="Jarbas"]USE Notas.Dbf ALIAS NOTA EXCLUSIVE NEW
FOR I:=1 TO 3
INDEX ON NUM_NOTA TAG I TO Notas.cdx
INDEX ON DTOS(DT_EMISSAO)+STR(NUM_NOTA,6) TAG I TO NOTAS.CDX
INDEX ON CGC_CPF+STR(NUM_NOTA,6) TAG I TO NOTAS.CDX
NEXT
[/quote]

O correto seria:
INDEX ON NUM_NOTA TAG 1 TO Notas.cdx
INDEX ON DTOS(DT_EMISSAO)+STR(NUM_NOTA,6) TAG 2 TO NOTAS.CDX
INDEX ON CGC_CPF+STR(NUM_NOTA,6) TAG 3 TO NOTAS.CDX

Voce esta pondo o "FOR I" e esta criando 3 vezes o 3º tag com a mesma chave.
Faça o teste de mesa para verificar sua lógica.

MensagemEnviado: 14 Dez 2005 18:41
por Jarbas
Vc tem toda a razao, nao fui feliz no exemplo , uma tremenda orelhada, mudei o programa e ficou assim :
Agora o meu indice so fica no primeiro. pq ??


request dbfcdx
rddsetdefault("DBFCDX")

USE Notas.Dbf ALIAS NOTA EXCLUSIVE NEW
_ind:={"NUM_NOTA","DTOS(DT_EMISSAO)+STR(NUM_NOTA,6)","CGC_CPF+STR(NUM_NOTA,6)"}

FOR I:=1 TO 3
_campo:=_ind[i]
INDEX ON (_campo) TAG I TO Notas.cdx
NEXT
ORDSETFOCUS("1")
LIST NUM_NOTA,CGC_CPF,DT_EMISSAO
INKEY(0)
ORDSETFOCUS("2")
LIST DT_EMISSAO,NUM_NOTA,CGC_CPF
INKEY(0)
ORDSETFOCUS("3")
LIST CGC_CPF,NUM_NOTA,DT_EMISSAO
CLOSE ALL

desde ja mto obrigado

MensagemEnviado: 14 Dez 2005 18:50
por Grings
Esquece o For, Next, faça como o colega escreveu, também não precisa TAG 1, TAG 2 e TAG 3, escreva somente TAG que os índices serão criados na ordem que voce escrever.

MensagemEnviado: 14 Dez 2005 19:23
por Jarbas
Amigo, nao posso esquecer o FOR NEXT, pois meu sistema armazena em vetor todos os arquivos utilizados e eu faco a abertura dos mesmos atraves de uma funcao . Estou tentando mudar de NTX p/ CDX e encontrei esse probleminha .