Importar arquivo dbf

23/05/2003

2

tenho um arquivo chamado produto.dbf gerado no foxpro, preciso passar os dados para paradox e gerar um relatorio, como devo proceder.



Obrigado


Wesley
Wfsf@brfree.com.br


Responder

Posts

23/05/2003

Brazoli

A maneira mais simples é criar uma tabela com a mesma strututura no piradox (é isto mesmo, piradox) e depois crie um programinha ponte que leia o dbf e grave no piradox.
Lembrando que vc vai precisar criar dois bdes....


Responder

23/05/2003

Marconi

Não, voce não precisa de dois bdes. Os aquivos estão podem estar até no mesmo banco de dados.

Eu tenho um procedimento que copia arquivos dbf para paradox

procedure TForm1.Atualizar;
var
a,b,d:integer;
mes,arq: string;
begin
if nd.active then nd.Close; //arquivo dbase
if np.active then np.Close; // arquivo paradox
mes:=Omes; // Omes é uma variavel global que guarda o mes que está em operação.
arq:=´NF´+mes;
nd.TableName:=arq+´.dbf´;
Nd.Open;
Cria_Tabela(´NF´,arq); // Aqui cria a tabela paradox com os mesmos campos (vide procedure abaixo)
Np.TableName:=arq+´.db´;
Np.Open;
Nd.First;
While not Nd.eof do begin // agora é só copiar os campos.
Np.Append;
b:= np.FieldCount -1;
for a := 0 to b do
begin
Np.Fields[a]:=Nd.Fields[a];
end;
np.Post;
nd.next;
end;
end;

Procedure TForm1.Cria_Tabela(Alias,Nome_Tabela:String);
{Copia uma tabela DBF criando outra em Paradox}
var
i,j,tam:Integer;
mens:string;
Begin
With TTable.Create(Application) do
begin
Active := False;
DatabaseName :=Alias;
TableName := Nome_Tabela;;
TableType := ttParadox;
i:=nd.FieldCount;
for j:= 0 to i-1 do
begin
tam:=nd.Fields[j].DataSize-1;
if nd.Fields[j].DataType = ftString then mens:=´Character or string field´;
if nd.Fields[j].DataType = ftSmallint then
begin
mens:=´16-bit integer field´;
tam:=0;
end;
if nd.Fields[j].DataType = ftInteger then
begin
mens:=´32-bit integer field´;
tam:=0;
end;
if nd.Fields[j].DataType = ftWord then
begin
mens:=´16-bit unsigned integer field´;
tam:=0;
end;
if nd.Fields[j].DataType = ftBoolean then mens:=´Boolean field´;
if nd.Fields[j].DataType = ftFloat then
begin
mens:=´Floating-point numeric field´;
tam:=0;
end;
if nd.Fields[j].DataType = ftDate then
begin
mens:=´Date field´;
tam:=0;
end;
if nd.Fields[j].DataType = ftMemo then mens:=´Text memo field´;
FieldDefs.Add(nd.Fields[j].FieldName, nd.Fields[j].DataType, tam, False);
end;
CreateTable;
Free;
end;
end;


Olha eu copiei isto de um programa meu que já funciona. Limpei algumas linhas desnecessárias, mas acho que sobrou alguma coisa que voce não vai utilizar, tais como mensagens e variaveis que controlavam outras coisas. Mas acho que dá para aproveitar o código.

No seu form crie os dois objetos Table nd e np. Associe-os a dois Datasources e ao banco de dados onde ele vai encontrar a tabela que deseja converter.

Bom divertimento !!!!

Marconi


Responder

23/05/2003

Marconi

Na verdade trabalhar com as duas tabelas é útil quando se esta migrando de um sistema para outro. Durante algum tempo os dois sistemas (Clipper (ou Foxpro) e Delphi podem funcionar em paralelo.
Neste caso toda a manutenção é dada nas tabelas dbase (que trabalha bem nos dois). À medida que se migra, vai se tirando os acessos de certas tabelas do Clipper e assim eliminando os dbfs.

Marconi


Responder

26/05/2003

Alceste

tenho um arquivo chamado produto.dbf gerado no foxpro, preciso passar os dados para paradox e gerar um relatorio, como devo proceder. PO CARA EXPORTA O BANCO P/ PARADOX SIMPLES. Obrigado Wesley Wfsf@brfree.com.br



Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira