Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   2 tablas Paradox a Firebird (https://www.clubdelphi.com/foros/showthread.php?t=75208)

pmtzg 04-08-2011 22:12:13

2 tablas Paradox a Firebird
 
hola Amigos
quiero hacer una consulta a los amigos que tienen mas experiencia en esto de las bases de datos y registros pues empiezo

hice ya hace unos años un pequeño programa para pasar 1 tabla de paradox
a Firebird

(uso paradox 7.0 en tablas, Firebird 2.1 y delphi 2007)

y lo hice de la siguiente manera y hasta ahora me ha funcionado al 100%

Código Delphi [-]
 while not TablaParadox.Eof do
    begin
       For i := 0 to TablaParadox.Fields.Count -1 do
          IBTabla1.Fields[i].Value:=TablaParadox.Fields[i].Value;
          IBTabla1.Post;
          TablaParadox.Next;
   end;

*** pero ahora al cabo de varios años la tabla paradox ha crecido un poco y decidieron
dividirla en 2 osea crear una nueva a partir de mzo 2011 y dejar los años anteriores en la tabla antigua

pues bien ahora mi CONSULTA

¿como seria la mejor opción para juntar las 2 tablas de paradox?

la estuctura es igual en las dos nada mas que a alguien se le ocurrio llevar registros de la tabla antigua a la tabla nueva y checando las 2 tablas existen algunos registros y otros casi iguales solo cambia un campo que es primary key numreg

Código Delphi [-]
ejemplo:  base nueva

numreg   cliente    tipomov   nfactura  doc  refiere         -> campo
178908    100          1            300      300   300           -> contenido


base vieja 

numreg   cliente    tipomov   nfactura  doc  refiere         -> campo
177593    100          1            300      300   300           -> contenido

y el nombre de las tablas es identico cuentas.db

c:\Pxnueva\cuentas.db - tabla nueva
c:\Pxnueva\Pxvieja\cuentas.db - tabla vieja

numreg es key primary

lo podria hace por medio de Tquery y despues de hacer la consulta pasar el resultado ??

o con dataset se prodria hacer una union he escuchado por ahi


ojala me puedan dar su punto de vista para crear 1 sola tabla en firebird
de antemano les agradezco el tiempo que se tomaron para este post

saludos

ecfisa 04-08-2011 23:15:37

Hola pmtzg.

No sé si entiendo bién tu problema... Por lo que entendí de tu mensaje y usando un TIBDataSet con su generador, basta con que hagas la copia de forma consecutiva:
Código Delphi [-]
...
while not ViejaTablaParadox.Eof do
begin 
  IBDataSet1.Append;
  For i := 1 to ViejaTablaParadox.Fields.Count -1 do  // i=1 para respetar el campo_ID
     IBDataSet1.Fields[i].Value:= ViejaTablaParadox.Fields[i].Value;
  IBDataSet1.Post;
  ViejaTablaParadox.Next;
end;

while not NuevaTablaParadox.Eof do
begin
  IBDataSet1.Append;
  For i := 1 to NuevaTablaParadox.Fields.Count -1 do 
    IBDataSet1.Fields[i].Value:= NuevaTablaParadox.Fields[i].Value;
  IBDataSet1.Post;
  NuevaTablaParadox.Next;
end;
...
Pero me quedan dudas sobre el papel que juega el campo 'numreg'. Lo supuse como ID, pero no sé si es un código o corresponde al número de algún formulario...

Saludos.

pmtzg 04-08-2011 23:48:45

hola ecfisa

mira estoy usando 1 ttable para paradox
TIBdatabase y TibTable para firebird

el campo numreg es un contador de registro y llave primaria
no se puede repetir y ese es mi problema
osea que en la tabla vieja ya existe un campo con numreg=1
y en tabla nueva igual numreg =1

y en otras ocaciones en algunos registros son iguales exepto en el campo numreg y lo que estoy intentando es que no se duplique el registro en su contenido ni en el campo numreg

es por eso que preguntaba si podia por medio de un query unir las 2 tablas y de lo que me resulte grabar en base de datos firebird

gracias Amigo


La franja horaria es GMT +2. Ahora son las 09:50:51.

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