Fórum Modificar banco de dados Dbase... #164387
03/06/2003
0
Seguinte:
Estou fazendo um programa para o gerenciamente de uma empresa. Esta empresa
já utilisava um programa antes (para dos... não sei que linguagem
utilizaram...), portanto precisei recuperar os dados do banco de dados
antigo da empresa para que fossem utilizados no novo programa, só que meu
programa exige alguns campos a mais nas tabelas, então tive que modificar a
estrutura dos arquivos .dbf
o problema é que se adiciono novos campos à tabela, ela não funciona no
programa antigo (quero que ele continue rodando também por um tempo... para
o caso de acontecer algum erro no meu programa é soh utiliar o antigo, e ele
gravará os dados nas mesmas tabelas, apenas deixando em branco os novos
campos...) o programa antigo ou simplesmente não acha os dados ou ainda diz
algo tipo que não encontra os indices...
Estou tentando à dias adicionar estes novos campos à tabela sem prejudicar
seu funcionamento no programa antigo más nada funciona...
Faço da seguinte maneira:
No database desktop: Tools / Utilities / Reestruct , e então abro a tabela
nfiscal.dbf, por exemplo... E então o programa abre a tabela e na barra de
titulo algumas vezes aparece que é uma tabela DBase IV outras que eh Dbase
for windows, e os indices aparecem na janelinha da direita... Então adiciono
os novos campos e salvo (as vezes não salva e diz que está no read-only
mode, noutras ele salva, más dá erro quando tento abrir com o programa
antigo...)
Qual é o procedimento correto para alterar a estrutura dessas tabelas de
maneira que funcionem tanto com o meu programa quanto no antigo???
Agradeço qualquer ajuda!
Abração!
Tiago Farinon
Tiago Farinon
Curtir tópico
+ 0Posts
03/06/2003
Inutaishou
Gostei + 0
03/06/2003
Tiago Farinon
Na verdade não criei indice algum... os indices que existiem são do banco do programa antigo (que não sei ao certo a versão dos dbfs...) no meu programa não preciso de indices (a tosca verdade é que não sei ao certo pra que eles servem... :oops: Sempre achei que fossem só para não ocorrerem itens repetidos ou para ordenação...), só que quero mante-los para o caso de precisar utilizar o programa antigo (se der algum pau no meu...)
Como não sabia onde foram criados os dbfs fiz uma alias do tipo STANDARD para meu programa acessar o banco... só que acho que os indices acabaram sendo apagados... não que isso seja um problema, tenho backup dos arquivos com indices, só não consigo é modifica-los sem apagar o indice...
Tem alguma dica?
Valeu!!!
Tiago Farinon
Gostei + 0
03/06/2003
Inutaishou
Qualquer alteração que você fizer na tabela, seja de exclusão, alteração ou inclusão de registros ou campos, você teria que recriar os indices... Esse programa em DOS deve ter uma opção para criar indices... Temporariamente crie os indices por ali... Mas é de extrema importancia que o seu programa Delphi tenha uma opção assim, e o SQL não cria indices para tabelas dbf´s, mas quanto a isso eu posso te ajudar indicando-lhe um componente chamado Halcyon que serve para usar tabelas dbf´s... Acjo que o erro é pela falta de atualização dos indices, portanto tente reindexar a tabela pelo sistema ou se preferir poste aqui seu e-mail que eu te mando o Halcyon e te ajudo no que for preciso com ele...
Gostei + 0
03/06/2003
Qmd
Nesse caso os indices sao os arquivos .NTX (tbm pode-se usar cdx, mdx, ndx, etc mas o padraozao eh ntx mesmo)
O caso eh o seguinte: para que o sistema antigo possa ler os dados que vc incluir pelo ´delphi´ vc precisa atualiar os indices tbm... pois normalmente a busca eh feita sobre eles... e para alterar a estrutura dos dbfs eu recomendo vc usar um aplicativo chamado DBU que acompanha o clipper.
eu conheco 3 maneiras de vc alterar os dados pelos 2 sistemas mantendo a integridade dos dbf/ntx:
1 - Usando o componente TADSDataset
2 - Usando o componente THalcyonDataset
3 - Alterando o programa em clipper para usar a RDD de CDX ou MDX para tornar os indices compativeis com o BDE. So que pra isso teria que alterar muita coisa no fonte do programa em clipper.
Acho que das opcoes a mais facil/rapida eh usar o TADSDataset.
Voce precisa distribuir junto com seu programa umas DLLs do ADS para funcionar... Outra coisa eh que vc tera que substituir os TTable / TQuery usandos no seu programa por componentes ADS. Dessa forma vc tbm podera usar os arquivos de indices dos dbfs. (metodo adstable1.ADSSeek)
No caso do halcyon nao precisa de nenhuma dll adicional. Mas tive problemas com indices que possuiam funcoes tipow Substring do clipper.
Eh comum nessa linguagem os programadores informarem somente as 4 primeira letras do comando. ex Subs . e o hancyon nao reconhecia isso. Sem dizer que o metodo para esvaziar tabelas destruia inclusive a estrutura hehehehe Ele tbm nao possui suporte a instrucoes SQL. Mas isso acho que vc nao vai usar mesmo, por nao ter nenhum ganho de velocidade (muito pelo contrario) em arquivos xbase. Com servidor ADS a historia eh outra...
Falow
Gostei + 0
06/06/2003
Inutaishou
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)