[firebase-br] (OT) Gerar metadata sql de um arquivo dbf em delphi

marcelo luiz stefaniak - teflamar marcelo em teflamar.com.br
Ter Jul 11 18:07:35 -03 2006


Claudir, segue rotina em delphi para gerar script, de dbf, clientdataset, 
query, etc.

procedure tfrmdiversos.gera_script;
var f:textfile;
    i,x: integer;
    wcampo0:string;
    wcampo:string;
    wconteudo:string;
    wreg:string;
begin
x:=0;
dm.dbf1.first;
assignfile(f,edscript.text);
rewrite(f);
writeln(f,'delete from '+uppercase(edit2.text)+';');
while not dm.dbf1.eof do
begin
wreg:='insert into '+uppercase(edit2.text)+' (';
for I := 0 to dm.dbf1.FieldCount - 1 do
begin
    wcampo:=lowercase(dm.dbf1.Fields[I].fieldname);
    wreg:=wreg+wcampo;
    if i <> dm.dbf1.FieldCount - 1 then wreg:=wreg + ',';
end;
wreg:=wreg+') values (';
for I := 0 to dm.dbf1.FieldCount - 1 do
begin
    wconteudo:='';
    if not dm.dbf1.Fields[I].IsNull then
    begin
        wcampo0:=lowercase(dm.dbf1.Fields[I].fieldname);
        wcampo:=wcampo0;
        if wcampo='to' then wcampo:='para';
        if wcampo='codigo' then wcampo:='cod';
        if wcampo='password' then wcampo:='senha';
        if (dm.dbf1.fieldbyname(wcampo0).DataType=ftfloat) or
            (dm.dbf1.fieldbyname(wcampo0).DataType=ftcurrency) or
            (dm.dbf1.fieldbyname(wcampo0).DataType=ftsmallint) or
            (dm.dbf1.fieldbyname(wcampo0).DataType=ftinteger) then
        begin
            if dm.dbf1.fieldbyname(wcampo0).asstring='' then 
wconteudo:='null'
            else 
wconteudo:=trocacarac(floattostr(arred2(dm.dbf1.fieldbyname(wcampo0).asfloat,2)),',','.');
        end;
        if (dm.dbf1.fieldbyname(wcampo0).DataType=ftdate) then
        begin
            if dm.dbf1.fieldbyname(wcampo0).asstring='' then 
wconteudo:='null'
            else 
wconteudo:=h39(datausa(dm.dbf1.fieldbyname(wcampo0).asstring));
        end;
        if (dm.dbf1.fieldbyname(wcampo0).DataType=ftstring) or
            (dm.dbf1.fieldbyname(wcampo0).DataType=ftmemo) then
        begin
            if dm.dbf1.fieldbyname(wcampo0).asstring='' then 
wconteudo:='null'
            else wconteudo:=h39(dm.dbf1.fieldbyname(wcampo0).asstring);
        end;
    end;
    if wconteudo='' then wreg:=wreg+'null' else wreg:=wreg+wconteudo;
    if i <> dm.dbf1.FieldCount - 1 then wreg:=wreg + ',';
end;
wreg:=wreg+');';
inc(x);
if x > strtoint(edcomita.text) then
begin
    writeln(f,'commit work;');
    x:=0;
end;
writeln(f,wreg);
dm.dbf1.next;
end;
writeln(f,'commit work;');
closefile(f);
lb1.caption:='fim';
end;
// marcelo luiz stefaniak - teflamar proc. dados ltda

----- Original Message ----- 
From: "Claudir Pereira dos Santos" <claupers_dbrays em yahoo.com.br>
To: "Lista de discussão FireBase" <lista em firebase.com.br>
Sent: Tuesday, July 11, 2006 10:28 AM


Pessoal, desculpem-me por postar este Off-topic mas é que to procurando algo 
em delphi para extrair o metadata sql de uma tabela DBF. Na net ainda nao 
encontrei nada. Alguém pode me ajudar?

Cordialmente


Claudir P Santos





Mais detalhes sobre a lista de discussão lista