Hola, gracias por la respuesta. te cuento, La tabla en DBf tiene definido el campo RUT como Numeric, Float es el otro formato en que lo puedo convertir para traspasar, pero es una alternativa.
La rutina es un ciclo con una tabla Prove (Dbf) en el Datamodulo MasterDb, que esta unida a través de un Alias al BDE para acceder y Proveedores es la tabla de firebird :
Código Delphi
[-]procedure TFSystem.Button1Click(Sender: TObject);
begin
Masterdb.Prove.First;
While not Masterdb.Prove.EOF do
Begin
with Masterdb.IBSQL2 do
begin
SQL.Clear;
SQL.Add( 'INSERT INTO PROVEEDORES' );
SQL.Add( '( RUT, DV, EMPRESA, CONTACTO, DIRECCION, CIUDAD, FONO1, GIRO, EMAIL1, FORMAPAGO, WEB )' );
SQL.Add( 'VALUES' );
SQL.Add( '(:RUT,: DV,:EMP,:CON,: DIR,:CIU,:FON,:GIR, :EMA, :FOR, :WEB)' );
ParambyName('RUT').AsInteger := Masterdb.ProveRUT.Value;
ParambyName('DV').AsString := Masterdb.ProveDV.Value;
ParambyName('EMP').AsString := Masterdb.ProveEMPRESA.Value;
ParambyName('CON').AsString := Masterdb.ProveCONTACTO.Value;
ParambyName('DIR').AsString := Masterdb.ProveDIRECCION.Value;
ParambyName('CIU').AsString := Masterdb.ProveCIUDAD.Value;
ParambyName('FON').AsString := Masterdb.ProveFONOS.Value;
ParambyName('GIR').AsString := Masterdb.ProveGIRO.Value;
ParambyName('EMA').AsString := Masterdb.ProveEMAIL.Value;
ParambyName('FOR').AsString := Masterdb.ProvePAGO.Value;
ParambyName('WEB').AsString := Masterdb.ProveWEB.Value;
ExecQuery;
end; Masterdb.prove.Next;
End; Try
Masterdb.IBTrsc.CommitRetaining;
ShowMessage('! PROVEEDORES GRABADO CORRECTAMENTE !');
Except
Masterdb.IBTrsc.RollbackRetaining;
ShowMessage('Se produjo un error y no se grabarón los datos de PROVEEDORES');
end;
end;
Pd. no se si fue la mejor idea definir los campos como Integer en la nueva tabla de Firebird.