Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   tabla paradox a firebird (https://www.clubdelphi.com/foros/showthread.php?t=48554)

mjjj 27-09-2007 18:48:40

tabla paradox a firebird
 
hola amigos... tengo el siguiente problema....

Actualmente tengo aproximadamente unas 40 tablas paradox, todos distintas entre si en cuanto a campos y registros...

quiero hacer un programa en delphi 2006, que lea los datos de las tablas paradox y que guarde los datos en las tablas firebird.

habia pensado hacerlo de la siguiente manera. Con el IBConsole generar una base de datos, den tro de esta base de datos, crear las distintas tablas (las equivalentes a las paradox, mismo nombre incluso) con sus respectivos campos.

Luego con un pequeño programa en delphi que me lea los datos de la tabla paradox y los escriba en la tabla firebird.

Me funcion, pero solo lo hice con una sola tabla, ya que me demore demasiado...

Pregunta... existe algun codigo para generar columnas en las tablas, copiando el nombre del campo de la tabla paradox....

Trate de utilizar el IBPump, pero me dio error, si que decidi realizarlo por medio de codigo.

Este fue el codigo que utilize para una tabla pequeña.-

Código Delphi [-]
begin
IBTABLE1.Close;
IBDATABASE1.DatabaseName:='LOCALHOST:C:\TABLAS\DATOS.FDB';
IBTABLE1.TableName:='CLAVES';
IBTABLE1.Open;
IBTABLE1.EmptyTable;
TABLE1.close;
table1.DatabaseName:='c:\datos';
table1.TableName:='claves2.db';
table1.Open;
Table1.First;
While not Table1.EOF do
begin
ibTable1.append;
ibTable1.FieldByName('usuario').asstring:= table1.FieldByName('usuario').asstring;
ibTable1.FieldByName('nombre').asstring:= table1.FieldByName('nombre').asstring;
ibTable1.FieldByName('clave').asstring:= table1.FieldByName('clave').asstring;
ibTable1.FieldByName('nivel').asstring:= table1.FieldByName('nivel').asstring;
ibTable1.FieldByName('empresa').asstring:= table1.FieldByName('empresa').asstring;
//Aquí sigues igualando
ibTable1.Post;
Table1.Next;
end;
IBTransaction1.CommitRetaining;
end;

lo que necesito se algun codigo que me lea el nombre del campo de la tabla antigua, y luego cree un campo en la tabla nueva con el mismo nombre dle anterior.... es posible hacer eso???

muchas gracias por su tiempo.... saludos

jhonny 27-09-2007 18:59:56

Bueno, para eso es el DataPump, que es un software de uso gratuito y que lo encontraras en la pagina de Clever Components .

basti 27-09-2007 19:02:36

Si los campos de una y otra tabla son iguales:

Código Delphi [-]
begin
  IBTABLE1.Close;
  IBDATABASE1.DatabaseName:='LOCALHOST:C:\TABLAS\DATOS.FDB';
  IBTABLE1.TableName:='CLAVES';
  IBTABLE1.Open;
  IBTABLE1.EmptyTable; 
  TABLE1.close;
  table1.DatabaseName:='c:\datos';
  table1.TableName:='claves2.db';
  table1.Open;
  Table1.First;
  While not Table1.EOF do
  begin
    ibTable1.append;
    for i := 0 to table1.Fields.Count - 1 do
      ibTable1.Fields[i].Value:= table1.Fields[i].Value;
    ibTable1.Post;
    Table1.Next;
  end;
  IBTransaction1.CommitRetaining;
end;

mjjj 27-09-2007 21:34:31

gracias basti por tu ayuda, lo voy a utilizar despues...

lo que me falta ahora es crear la tabla de firebird igual a la de paradox... quiero hacerlo por codigo... creo que va lago asi

Código Delphi [-]
ibtable1.FieldDefs.clear;
ibTable1.Active:= FALSE;
ibdatabase1.Close;
IBDATABASE1.DatabaseName:='LOCALHOST:C:\TABLAS\DATOS.FDB';
ibTable1.TableName    := table1.tablename;
ibdatabase1.Open;
ibtransaction1.active:=true;
x:=table1.FieldDefs.Count;
for I := 1 to X do
  ibTable1.FieldDefs.Add(table1.FieldDefs[i].Name,
   table1.FieldDefs[i].datatype,
   table1.FieldDefs[i].Size, FALSE);

no me funciona.. me tira un error... alguien que me ayude porfavor...


gracias


La franja horaria es GMT +2. Ahora son las 22:07:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi