Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Conexión con bases de datos
Register FAQ Members List Calendar Guía de estilo Today's Posts

Conexión con bases de datos

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 24/02/2009
itsi itsi is offline
Miembro
 
Join Date: Oct 2006
Posts: 29
Poder: 0
itsi Va por buen camino
Conectar 2 BD con FireBird

Buenas amigos del Foro.
Tengo un problemilla que no se como realizar. Os Comento. Tengo 2 BD en directorios distintos y quiero pasar de una BD a otra toda la información de un tabla.
Directorio1\BD1.gdb
Directorio2\BD2.gdb

La conexión a la BD1 es correcta pero la BD2 no me conecta.

dmBD2.BD2.DatabaseName := 'C:\Directorio2\BD2.gdb';
dmBD2.BD2.Connected := True;
dmBD2.TransBD2.Active := True;
//Copiamos las Tablas Maestras
DATASETLOCAL := tIBDataSet(dmBD1.EMPRESAS);
DATASETLOCAL.Active := TRUE;

//Copiamos las Tablas Destino
DATASETLOCAL_Destino := tIBDataSet(dmBD2.EMPRESAS);
DATASETLOCAL_Destino.Active := True;with dmBD1.AuxQuery do
begin
Active := FALSE;
SQL.Text := 'SELECT * FROM Articulos';

Active := TRUE;

First;
while not Eof do
begin

DATASETLOCAL_Destino.Insert;
for i := 0 to FieldCount - 1 do
begin
DATASETLOCAL_Destino.Fields[i] := Fields[i];
end;
DATASETLOCAL_Destino.Post;

Next;
end;

end;

El error que me da es que esta grabando los datos en la BD1 en vez de la Segunda(BD2).

¿Esta bien hecha la conexión? ¿Porque me esta grabando en la BD1 en vez de la BD2?

Un saludo a Tod@s.
Reply With Quote
  #2  
Old 24/02/2009
duilioisola's Avatar
[duilioisola] duilioisola is offline
Miembro Premium
 
Join Date: Aug 2007
Location: Barcelona, España
Posts: 1,806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Dos cosas:
- Pon el código entre etiquetas delphi ( [ DELPHI ] ... [ / DELPHI ] ). Así se verá mejor.
- Danos el texto exacto del error. No creo que lo hayas interpretado bien. No creo que Delphi se de cuenta de qué dato va en qué base...

Código Delphi [-]
dmBD2.BD2.DatabaseName := 'C:\Directorio2\BD2.gdb';
dmBD2.BD2.Connected := True;
dmBD2.TransBD2.Active := True;
//Copiamos las Tablas Maestras
DATASETLOCAL := tIBDataSet(dmBD1.EMPRESAS);
DATASETLOCAL.Active := TRUE;

//Copiamos las Tablas Destino
DATASETLOCAL_Destino := tIBDataSet(dmBD2.EMPRESAS);
DATASETLOCAL_Destino.Active := True;
with dmBD1.AuxQuery do
begin
   Active := FALSE;
   SQL.Text := 'SELECT * FROM Articulos';

   Active := TRUE;

   First;
   while not Eof do
   begin

      DATASETLOCAL_Destino.Insert;
      for i := 0 to FieldCount - 1 do
      begin
         DATASETLOCAL_Destino.Fields[i] := Fields[i];
      end;
      DATASETLOCAL_Destino.Post;

      Next;
   end;

end;

También se me ocurre que no estés conectando correctamente a la base de datos destino.
Normalmente se pone igual que si fuera una conexión de red:
Código Delphi [-]
   dmBD2.BD2.DatabaseName := '192.168.0.1:C:\Directorio2\BD2.gdb';
//o
   dmBD2.BD2.DatabaseName := 'localhost:C:\Directorio2\BD2.gdb';

Además puedes hacer un trace (ir avanzando con F8) y decirnos en qué línea aparece ese error (y su texto).

Tampoco veo el Commit de la transacción.

Código Delphi [-]
dmBD2.BD2.DatabaseName := 'C:\Directorio2\BD2.gdb';
dmBD2.BD2.Connected := True;
dmBD2.TransBD2.Active := True;
[...]
dmBD2.TransBD2.Commit; // Depende del componente

Last edited by duilioisola : 24/02/2009 at 13:53.
Reply With Quote
  #3  
Old 24/02/2009
itsi itsi is offline
Miembro
 
Join Date: Oct 2006
Posts: 29
Poder: 0
itsi Va por buen camino
Aqui es donde me da el Error

DATASETLOCAL_Destino.Post;

Error :
Violation of primary or unique key constraint "PK_Articulos" on table "ARTICULOS"
Reply With Quote
  #4  
Old 24/02/2009
duilioisola's Avatar
[duilioisola] duilioisola is offline
Miembro Premium
 
Join Date: Aug 2007
Location: Barcelona, España
Posts: 1,806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Pues no tiene nada que ver con el error que comentabas...
Esto solo quiere decir que ya existe en la tabla destino el "artículo" que quieres insertar.

Las Primary Keys o los Unike Index, no permiten que existan duplicados en los datos.

Antes de insertar, deberás hacer un select de la tabla destino para ver si ya existen.
Si existen, haces un update de los campos que corresponda. Sino, lo insertas.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
conectar Firebird y DBE miguel_e Firebird e Interbase 4 16/06/2008 18:38
Error al conectar Firebird+MDO brakaman Conexión con bases de datos 2 08/04/2007 22:49
Conectar IBdatabase con firebird cesar_picazo Conexión con bases de datos 4 28/03/2007 01:03
conectar firebird con asp berfer Firebird e Interbase 4 06/09/2006 19:14
Conectar firebird con .net? jam888 Firebird e Interbase 1 02/06/2006 21:49


All times are GMT +2. The time now is 05:46.


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
Copyright 1996-2007 Club Delphi