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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2004
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
CHiCoLiTa Va por buen camino
Querys entre 2 BBDD diferentes

Hola, ando un poco espeso ultimamente y estoy con trabajando con Delphi 6 contra varias Bases de datos en SQL Server.

Mi inquietud en estos momentos es la siguiente:

Si quiero copiar los datos de una tabla que estan en la Base de Datos A (Tabla1) a otra tabla a la Base de Datos B (Tabla2), lo que hago es abrir la tabla o la query con los datos que quiero copiar, abrir la tabla destino y hago lo siguiente

Código Delphi [-]
while not Tabla1.Eof do
begin
      Tabla2.Append;
      for i := 0 to Pred(Tabla1.Fields.Count) do
             Tabla2.Fields[i].Value := Tabla1.Fields[i].Value;
      Tabla2.Post;
      Tabla1.Next;
end;

No se si se puede hacer de otra forma, pero ese problema ya lo tengo solventando

Ahora bien, y aqui llega mi gran duda. Teniendo la Base de Datos A y la Base de Datos B, quiero hacer una Query que cruce la Tabla1 en la BBDD A con la Tabla2 que esta en la BBDD B

Como consigo eso?

Por cierto, se me olvida decir que las conexion y tablas y querys que uso son ADO
Responder Con Cita
  #2  
Antiguo 15-09-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
Para insertar registros, y hacer las consultas, te vale mas usando sql. Por ejemplo, tabla a en servidor1, tabla b en servidor2:

insert into servidor2.dbo.tablab (campo, campo)
select servidor1.dbo.tablaa (campo, campo)

igual para las consultas:

select A.campo, B.campo

from servidor1.dbo.tablauno A
INNER JOIN servidor2.dbo.tablados b ON A.campo1=B.campo1

me explique?
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 16-09-2004
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
CHiCoLiTa Va por buen camino
Ahhh, que pillin!! Nunca me habia funcioando eso porque no ponia el dbo

Muchas gracias por la respuesta

Con esta respuesta se me ocurren 2 nuevas preguntas,

- La primera es si eso mismo se puede hacer con 2 SGBD diferentes, por ejemplo con SQL Server con MS Access. Desde Access tienes la posibilidad de vincular tablas y hacer las consultas que quieras

- La segunda pregunta seria si para volcar datos de una Base de Datos a otra haciendo con una consulta directamente, con el INSERT INTO como podria tener una barra de progreso para controlar el tiempo

Supongo que habria que ejecutarla en un hilo a parte, porque sino se quedaria "colgado" el programa, y usando el eveto del query FetchProgress

Esto bien hecho funcionaria?
Responder Con Cita
  #4  
Antiguo 07-11-2005
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
Hola,

no entiendo muy bien la sentencia Query que estais comentando. A que os referiís cuando hablais de Servidor1 y Servidor2?.
En mi caso, tengo 2 bbdd (Interbase 6) en el mismo equipo y necesito vocar el contenido de varias tablas de una bbdd a otra. Estoy intentando utilizar la sentencia insertada por Hector
Código:
insert into servidor2.dbo.tablab (campo, campo)
select servidor1.dbo.tablaa (campo, campo)
, pero no se si debo ejecutarla como un script y contra qué bbdd de las dos.
Alguien puede aclararme esto?.

Gracias a todos.
Responder Con Cita
  #5  
Antiguo 07-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Esa sentencia es para ms-sql server, no funciona con interbase.
Responder Con Cita
  #6  
Antiguo 07-11-2005
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
Gracias por responder.

Sabes si en Interbase se puede utilizar alguna similar. O en para estos casos, está capado?.

Saludos
Responder Con Cita
  #7  
Antiguo 07-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Con ninguna sentencia se puede hacer una transferencia o consulta de datos entre 2 o mas BBDD. Solo queda usar DataPump o tener 2 dataset (en delphi) y mediante un ciclo agregar x datos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #8  
Antiguo 09-11-2005
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
Me he tenido que implementar un bucle, con 2 TTables e ir volcando registros uno a uno, tal y como describe CHICOLITA en este hilo.
El problema que he encontrado, es que si el valor del campo es '' (cadena vacia) me inserta en el campo de la tabla destino un Null, valor que no me permite tener la própia bbdd, ya que es un campo tipo 'not null'.

Código:
IBTableVacia.Fields[i].Value := IBTableLlena.Fields[i].Value;
esta es la expresión que utilizo para pasar la información entre tablas.

Saben porque me ocurre esto con la cadena vacia ('').

Saludos
Responder Con Cita
  #9  
Antiguo 15-11-2005
pyanqn pyanqn is offline
Miembro
 
Registrado: oct 2005
Posts: 54
Poder: 19
pyanqn Va por buen camino
Hola, yo estoy usando Zeos, y MySql. Tengo dos conecciones ya que tengo dos bases de datos distintas, la pregunta es como hago para realizar una consulta que involucra el uso de dos tablas que provienen de una y otra base de datos.
Responder Con Cita
  #10  
Antiguo 16-11-2005
pyanqn pyanqn is offline
Miembro
 
Registrado: oct 2005
Posts: 54
Poder: 19
pyanqn Va por buen camino
Mas concretamente la pregunta es: tengo que hacer un join con tablas que estan en dos bases de datos distintas. La question es como hago esto usando ZQuery, ya que solo puedo elazarle una unica conexión.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 12:38:55.


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