Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Como cruzar dos bases de datos en Builder? (https://www.clubdelphi.com/foros/showthread.php?t=26550)

JuanErasmo 26-10-2005 16:37:41

Como cruzar dos bases de datos en Builder?
 
Buenas Tardes amigos, estoy en un aprieto....
Necesito mezclar dos bases de datos. Existe algun método para ello?
El problema es las dos bases de datos contienen las mismas tablas y campos, solo necesito insertar los datos de una en la otra.....
Si alguien pueda ayudarme le agradeceré mucho.

jachguate 26-10-2005 17:11:57

en pseudocodigo:

Código:

  QueryOrigen.database = base1;
  QueryDestino.database = base2;
  QueryOrigen.open;
  QueryDestino.open;
  while not QueryOrigen.eof do
  begin
    QueryDestino.InsertRecord([QueryOrigen.Campo1.Value,
      QueryOrigen.Campo2.Value]);
    Query1Origen.next;
  end;
  Base2.Commit;

Esto es a grosso modo, pero te da la idea.

Hasta luego.

;)

Neftali [Germán.Estévez] 26-10-2005 18:01:36

Puedes probar con alguna de las aplicaciones de DataPump que existen; Delphi trae una y puedes encontrar algunas otras por Internet. La duda que tengo es el comportamiento que tienen ante posibles colisiones de los datos, así que no se si te será útil, pero por probar...

dec 26-10-2005 18:07:10

Hola,


Cita:

Empezado por Neftali
Puedes probar con alguna de las aplicaciones de DataPump que existen; Delphi trae una (...)

C++ Builder 6 también cuenta con ella. :D

JuanErasmo 26-10-2005 18:11:23

Gracias pero una preguntas.

QueryOrigen es un IBQuery?
y Campo1, cual es el equivalente?

Gracias!

JuanErasmo 26-10-2005 18:14:57

Hola Dec,
De donde saco un Data Pump en Builder?

dec 26-10-2005 18:27:03

Hola,


Cita:

Empezado por JuanErasmo
De donde saco un Data Pump en Builder?

El programa puedes abrirlo desde los accesos directos correspondientes a C++ Builder que se sitúan dentro del menú de inicio de Windows. Se ejecuta una aplicación que se encuentra en: "C:\Archivos de programa\Archivos comunes\Borland Shared\BDE\datapump.exe", generalmente, vamos.

JuanErasmo 26-10-2005 19:01:06

Dec, no tengo el DataPump....

necesito hacerlo manualmente....
Es mezclar dos tablas, insertar una en la otra.....
Gracias. (En Builder)

jachguate 26-10-2005 19:15:28

Cita:

Empezado por JuanErasmo
Gracias pero una preguntas.

QueryOrigen es un IBQuery?
y Campo1, cual es el equivalente?

Gracias!

Es un IBQuery o un TQuery o un TAdoQuery, o un TDOAQuery... es lo que vos uses para conectarte a tu base de datos.

Campo1, pues como se llame el campo de tu tabla.

Digamos.

qClienteNOMBRES

o

qFacturaVALOR

etc.

Hasta luego.

;)

JuanErasmo 26-10-2005 19:22:18

Hola, el nombre del campo no se puede acceder como una propiedad....

asi que QueryOrigen.Campo1.Value en "Campo1" no puedo poner un AnsiString...
cual es la propiedad para relacionar un campo a un Query?
Gracias por tu ayuda.

dec 27-10-2005 00:34:40

Hola,

Código:

while not QueryOrigen.eof do
 begin
  QueryDestino.InsertRecord([QueryOrigen.Campo1.Value,
        QueryOrigen.Campo2.Value]);
          Query1Origen.next;
 end;

Bueno. En el código de más arriba no se está especificando si un determinado valor es de tipo "string" o de qué tipo sea, sencillamente, diría yo (a riesgo de equivocarme) se está asumiendo que el tipo de dato del "QueryOrigen" es el mismo que el tipo de dato del "QueryDestino". Es decir, tal vez no sea necesario hacer lo que te planteas hacer. ¿No?

dec 27-10-2005 00:34:46

Hola,


Código:

while not QueryOrigen.eof do
 begin
  QueryDestino.InsertRecord([QueryOrigen.Campo1.Value,
        QueryOrigen.Campo2.Value]);
          Query1Origen.next;
 end;

Bueno. En el código de más arriba no se está especificando si un determinado valor es de tipo "string" o de qué tipo sea, sencillamente, diría yo (a riesgo de equivocarme) se está asumiendo que el tipo de dato del "QueryOrigen" es el mismo que el tipo de dato del "QueryDestino". Es decir, tal vez no sea necesario hacer lo que te planteas hacer. ¿No?

jachguate 27-10-2005 01:14:54

Cita:

Empezado por JuanErasmo
Hola, el nombre del campo no se puede acceder como una propiedad....

asi que QueryOrigen.Campo1.Value en "Campo1" no puedo poner un AnsiString...
cual es la propiedad para relacionar un campo a un Query?
Gracias por tu ayuda.

He usado Value, precisamente, por ser un variant (en tfield), donde podría caber cualquier tipo de dato, y asumiendo, como ya apunto dec que las estructuras serán identicas, o al menos, equivalentes :D

Claro que podes ser mas específico y poner:

Código Delphi [-]
  QueryDestino.InsertRecord([QueryOrigenCampo1.AsInteger,
    QueryOrigenCampo2.AsString, QueryOrigenCampo3.AsFloat]);
  //etcetera;

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 08:39:40.

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