Página 1 de 1
duvida atualizacao de indice CDX
Enviado: 02 Out 2015 09:05
por porter
ola pessoal, no xHarbour, estou gerando CDX, quando abro um arquivo, abro todos os indices com o set index como mostrado abaixo, gostaria de saber porque alguns indices aparecem com a data atualizada, no caso abaixo, por exemplo, somente o ind1 fica com a data atualizada os outros nao, achei que a data dos indices eram atualizados somente quando indexava(index on codmer to ind1).
SET INDEX TO ind1, indi2, ind3, ind4
duvida atualizacao de indice CDX
Enviado: 02 Out 2015 10:57
por Toledo
Amigo, sempre que for atualizado algum campo no DBF (ou inserir um registro novo) que seja chave do arquivo de índice, então o arquivo de índice será também atualizado, e assim a data do arquivo será alterada. Caso o campo atualizado não faça parte da chave de índice, então a data do arquivo não será alterada.
Obs.: em arquivos CDX, você pode criar tag e indexar em um mesmo arquivo CDX várias chaves diferentes, isto é, em um mesmo arquivo CDX ter várias chaves de índices. Neste caso, abrir apenas um CDX no SET INDEX TO.
Abraços,
duvida atualizacao de indice CDX
Enviado: 02 Out 2015 11:54
por alxsts
Olá!
Só complementando, no RDD CDX, se, e somente se, o nome do arquivo estrutural de índices (o arquivo .CDX único que contém todas as tags de índices), também conhecido como Order Bag, tiver o mesmo nome do arquivo .DBF e a opção SET AUTOPEN estiver ON, então, o comando USE detectará isto e abrirá o arquivo de índices automaticamente. Opcionalmente, se a opção SET AUTORDER for especificada, poderá ser especificada uma ordem inicial.
duvida atualizacao de indice CDX
Enviado: 03 Out 2015 21:33
por JoséQuintas
Porter, não sei se está fazendo por etapas.
Só pra reforçar o que já disseram:
No NTX: é só o nome do arquivo ARQUIVO.NTX
No CDX: tem também um nome interno, a TAG, pode ter até 10 letras. Tag repetida, é considerada somente uma.
No CDX: cada arquivo pode conter vários índices.
Código: Selecionar todos
USE CLIENTES
INDEX ON CODIGO TAG INDICE1
INDEX ON NOME TAG INDICE2
INDEX ON ENDERECO TAG INDICE3
SET INDEX TO CLIENTES
Isso em CDX resulta no arquivo CLIENTES.CDX contendo os três índices.
Além da vantagem de não esquecer de abrir índice adicional, ainda conta como 1 único arquivo aberto.
Código: Selecionar todos
USE CLIENTES
INDEX ON CODIGO TAG INDICE1 TO ARQUIVO1
INDEX ON NOME TAG INDICE2 TO ARQUIVO2
INDEX ON ENDERECO TAG INDICE3 TO ARQUIVO3
SET INDEX TO ARQUIVO1, ARQUIVO2, ARQUIVO3
No exemplo acima, vai criar ARQUIVO1.CDX, ARQUIVO2.CDX, ARQUIVO3.CDX
Código: Selecionar todos
USE CLIENTES
INDEX ON CODIGO TAG INDICE1 TO ARQUIVO1
INDEX ON NOME TAG INDICE2 TO ARQUIVO1
INDEX ON ENDERECO TAG INDICE3 TO ARQUIVO2
SET INDEX TO ARQUIVO1, ARQUIVO2
No exemplo acima, vai criar ARQUIVO1.CDX contendo os índices INDICE1 e INDICE2, e ARQUIVO2.CDX contendo INDICE3
Código: Selecionar todos
USE CLIENTES
INDEX ON CODIGO TAG INDICE
INDEX ON NOME TAG INDICE
INDEX ON ENDERECO TAG INDICE
SET INDEX TO CLIENTES
Neste último está errado. Apesar de criar 3, só vale 1 por causa do nome interno repetido.
Não sei se é este o seu caso.
Também é bom lembrar disto na hora de indexar, porque o espaço ocupado será de 3 índices. Convém apagar um CDX e recriá-lo pra isto não acontecer - isto não acontece com NTX.