Índices CDX

MIGRAÇÃO DAS BASES DBFNTX PARA DBFCDX

Vantagens da base CDX:

Índices com tamanho 70% menor em bytes;

Arquivo do campo memo 30% menor em bytes;

Velocidade na reindexação de 30-70% superior;

Maior velocidade do sistema nas atividades relacionadas aos DBFs;

Não há boatos sobre muitos problemas com índices (evita-se muitos transtornos como troca de informações pelo índice que quebrou e paradas na rede para reindexar o sistema).

 

Como fazer para usar os índices .CDX/.IDX ???

1º) No primeiro programa que abre algum DBF do seu sistema, acrescente estas linhas:

 
 
 
DBSETDRIVER("_DBFCDX") // Apenas no Clipper versão 5.3, acrescente esta linha.

 

2º) Depois anexe (linkedite) a lib DBFCDX.lib ao seu sistema (incluindo na lista de LIBs que o seu sistema utiliza).

Assim seu sistema já está preparado, sem embargo, haverá problemas de corrupção das bases que possuem campo memo, já que o driver CDX utiliza uma estrutura mais moderna para armazenar informações do campo memo e uma extensão diferente, a .FPT (ao invés de .DBT).

Como eu faço para transformar os .DBT para .FPT para que o sistema funcione?!?!?!

3º) Faça um BackUp (cópia de segurança) do diretório onde se encontram as bases de dados do seu sistema, caso necessite voltar o BackUp por algum motivo, apague primeiro todo o conteúdo do diretório atual das bases para que não haja confusão entre .DBF que chama .CDX/.IDX e .DBF que chama .DBT., pois ao descompactar/voltar o BackUp os arquivos que já existem serão ignorados.

4º) Preparei um utilitário para isso, rode o DBT2FPT.exe no diretório onde estão as bases de dados e este pequeno programa fará todo o trabalho para você! Para isso baixe o CDX_UTIL.zip onde você encontrará o DBT2FPT.prg e o FPT2DBT.prg (p/ inverso) e compile-o com o Clipper 5.2. Vide anexo.

Observação: A base de dados DBFCDX só está disponível a partir da versão 5.2 do Clipper! Portanto, se você utiliza a versão igual ou inferior à 5.1 veja as observações exaradas sobre Migração Clipper 5.1 p/ 5.2.

A diferença entre IDX e CDX é que o segundo é uma "bolsa" de índices, apenas.

Para confeccionar um programa flexível, você deve verificar a existência de um arquivo de índice com a função INDEXEXT(), que retorna o nome da extensão dos arquivos de índices.

Ex.:

IF !FILE( "CLIENTES.NTX" ) // NÃO RECOMENDADO!

IF !FILE( "CLIENTES.NTX" ) // NÃO RECOMENDADO!

IF !FILE( "CLIENTES"+INDEXEXT() ) // RECOMENDADO!

 

- Imagine o tempo que você teria poupado agora, hein?!

 

Tudo bem. E agora, como criar os índices?! Veja o exemplo:

IF !FILE( "AZIENDE"+INDEXEXT() )

   IF SELECT("AZ") = 0 // Arquivo fechado
      USE AZIENDE ALIAS AZ EXCLUSIVE NEW

   ELSE

      AZ->(DBCLOSEAREA()) // Fecha para abrir em modo "exclusive"

      USE AZIENDE ALIAS AZ EXCLUSIVE NEW

   ENDIF

   USE AZIENDE ALIAS AZ EXCLUSIVE NEW
   INDEX ON CODIGO   TAG CODIGO   TO AZIENDE
   INDEX ON FANTASIA TAG FANTASIA TO AZIENDE
   INDEX ON RSOCIAL  TAG RSOCIAL  TO AZIENDE

ENDIF

No exemplo acima, foi criado uma "bolsa" de índices, é como se fosse mais de um arquivo de índice junto em um só arquivo, identificados pelo parâmetro TAG.

Tudo bem. E agora, como alterar a ordem dos índices?! Veja o exemplo:

AZ->( ORDSETFOCUS("RSOCIAL") )

// OU

AZ->( ORDSETFOCUS(3) )

ATENÇÃO: Esta lib DBFCDX já vem com o Clipper!


 

AnexoTamanho
cdx_util.zip4.31 KB