Clipper On Line • Ver Tópico - Indice CDX

Indice CDX

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Indice CDX

Mensagempor Jarbas » 14 Dez 2005 17:04

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
Jarbas
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 82
Data de registro: 08 Dez 2005 16:48
Cidade/Estado: Sao Paulo
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Indice CDX

Mensagempor gvc » 14 Dez 2005 17:54

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

gvc
Colaborador

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

Mensagempor Jarbas » 14 Dez 2005 18:41

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
Jarbas
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 82
Data de registro: 08 Dez 2005 16:48
Cidade/Estado: Sao Paulo
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Grings » 14 Dez 2005 18:50

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.
Grings
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 366
Data de registro: 18 Ago 2004 13:51
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Mensagempor Jarbas » 14 Dez 2005 19:23

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 .
Jarbas
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 82
Data de registro: 08 Dez 2005 16:48
Cidade/Estado: Sao Paulo
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


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
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro