Clipper On Line • Ver Tópico - Roteiro NTX pra CDX

Roteiro NTX pra CDX

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Roteiro NTX pra CDX

Mensagempor JoséQuintas » 21 Out 2014 09:14

Aproveitar que acabei de fazer isso com outro aplicativo, pra mostrar que caminho eu segui pra fazer a mudança por etapas.

1. Se possível, alterar rotinas de abrir índices

Aqui eu uso uma AbreArquivos( { "arquivo1", "arquivo2", ... } )
Essa rotina já abre DBF e seus respectivos índices.
No meu caso, tenho uma lista no sistema com DBFs e respectivos arquivos de índices
Pode usar o sistema normalmente durante/depois disso.
Temporários não precisa mexer.
Isto vai facilitar quando mudar pra usar CDX pra valer

2. Esta parte tem que ser de uma vez:
alterar extensão de NTX pra CDX
Vai precisar uma parada no sistema pra reindexar.
Pode usar o sistema normalmente depois disso.
Por enquanto a vantagem vai ser índices menores, e possibilidade de usar chave de indexação maior
Convém desligar a abertura automática de CDX, e fazer somente manual.
Alterar If .NOT. FILE( "arquivo.ntx" ) pra IF .NOT. File( "arquivo.cdx" )

3. Acrescentar tag na indexação
INDEX ON codigo TAG ("clientec") TO clientc


Pronto, continua tudo igual, e os índices passaram a ter TAG, que é a referência pra CDX
Nos temporários não é obrigatório isso.
Pode usar o sistema normalmente durante/depois disso.
Assim que puder, parar o sistema e reindexar.

4. Alterar os SET INDEX e/ou SET ORDER usados pra alterar a ordem dos índices

Pra mudar a ordem, ao invés de SET ORDER TO 2, ou SET INDEX TO clientenome
passar a usar OrdSetFocus( "clientenome" )
Pode usar o sistema normalmente durante/depois disso.
Temporários não precisa mexer.
A abertura de índices é sempre de todos, e só usa ordsetfcus() pra ordem.
Se fez a etapa 1, facilita pra não alterar em cada fonte.

USE clientes
SET INDEX TO clientecodigo,clientenome
OrdSetFocus( "clientecodigo" )


5. Alterar pra aquivo único.

Precisa alterar a indexação, que não precisa mais nome de arquivo CDX

INDEX ON codigo TAG clientecod
INDEX ON nome TAG clientenome


E alterar as aberturas de índice, que se usou a etapa 1 fica mais fácil.

USE clientes
SET INDEX TO clientes
OrdSetFocus( "clientecodigo" )


Após esta etapa, parar o sistema pra reindexar.

E é isso.
É bom pra sistemas grandes, pra ir fazendo por etapas.

antes:
clientes.dbf
cliente_codigo.ntx
cliente_nome.ntx
cliente_cnpj.ntx
cliente_endereco.ntx

depois:
clientes.dbf
clientes.cdx

Vantagens:
- Índices menores
- Melhor controle sobre atualização de índices, porque todos estão sempre abertos e sendo atualizados
- Neste exemplo, de 5 arquivos abertos passaram a ser 2, o que reduz o total de arquivos abertos e pode evitar DOS ERROR 4
O limite de índices em um CDX são 50, o que é muito, mas se precisar de mais ainda, só criar mais arquivos CDX.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Roteiro NTX pra CDX

Mensagempor JoséQuintas » 21 Out 2014 09:21

Acha estranho vários índices num único arquivo?

O que dirá do Access então....
Equivale a todos os DBFs e CDX num único arquivo.
Vira tudo um único arquivo MDB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Roteiro NTX pra CDX

Mensagempor Jairo Maia » 21 Out 2014 12:48

Olá José,

Como sempre muito boas suas dicas.

Você sabia que esse mesmo método pode ser também usado com os NTX bastando usar Tag. E da mesma forma: quando não indica o nome do arquivo índice com TO assume o mesmo nome do Dbf:

NTX sem a cláusula TAG:
clientes.dbf
cliente_codigo.ntx
cliente_nome.ntx
cliente_cnpj.ntx
cliente_endereco.ntx

NTX com a cláusula TAG:
clientes.dbf
clientes.ntx
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Roteiro NTX pra CDX

Mensagempor JoséQuintas » 21 Out 2014 12:59

Isso eu não sabia.
Mas provavelmente só seja aceito no Harbour.
Só ajustar o roteiro, conforme os fontes ou o compilador Clipper/Harbour/xHarbour.

Faltou avisar uma coisa importante:
No CDX, ao criar um índice por uma tag, a anterior não se apaga.

use clientes
index on codigo TAG codigo
index on codigo TAG codigo
index on codigo TAG codigo
index on codigo TAG codigo


Isso vai causar um índice 4 vezes maior.
O problema vai ser só ocupar mais espaço.
Pra criar um CDX do zero o primeiro passo vai ser apagar caso já exista. Provavelmente o NTX com tag também.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Roteiro NTX pra CDX

Mensagempor Jairo Maia » 22 Out 2014 04:14

JoséQuintas escreveu:Mas provavelmente só seja aceito no Harbour.
Sim. Somente no Harbour. E se não estou enganado, somente a partir da versão 2.1.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes




Retornar para Contribuições, Dicas e Tutoriais

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