Importar arquivo dbf
23/05/2003
0
Obrigado
Wesley
Wfsf@brfree.com.br
Wesleyfsf
Posts
23/05/2003
Brazoli
Lembrando que vc vai precisar criar dois bdes....
23/05/2003
Marconi
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
23/05/2003
Marconi
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
26/05/2003
Alceste
Clique aqui para fazer login e interagir na Comunidade :)