Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2009
itsi itsi is offline
Miembro
 
Registrado: 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.
Responder Con Cita
  #2  
Antiguo 24-02-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
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

Última edición por duilioisola fecha: 24-02-2009 a las 13:53:15.
Responder Con Cita
  #3  
Antiguo 24-02-2009
itsi itsi is offline
Miembro
 
Registrado: 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"
Responder Con Cita
  #4  
Antiguo 24-02-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
conectar Firebird y DBE miguel_e Firebird e Interbase 4 16-06-2008 18:38:39
Error al conectar Firebird+MDO brakaman Conexión con bases de datos 2 08-04-2007 22:49:10
Conectar IBdatabase con firebird cesar_picazo Conexión con bases de datos 4 28-03-2007 01:03:48
conectar firebird con asp berfer Firebird e Interbase 4 06-09-2006 19:14:41
Conectar firebird con .net? jam888 Firebird e Interbase 1 02-06-2006 21:49:40


La franja horaria es GMT +2. Ahora son las 18:43:26.


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