Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2005
El_Raso El_Raso is offline
Miembro
 
Registrado: oct 2003
Posts: 135
Poder: 21
El_Raso Va por buen camino
Como hacer una consulta (Query) con dos DB?

Alguien me dice como? usando Firebird... quiero consultar dos tablas que estan en dos bases de datos diferentes... ejemplo

DB1 tiene la Tabla Provincia
DB2 tiene la Tablas Alumnos y los alumnos tienen el codigo de la provincia de la tabla provincia que esta en la DB1, como traigo el nombre de la provincia?

Un ayuda con ejemplo porfa...

Un Saludo a todos!!!
Responder Con Cita
  #2  
Antiguo 24-11-2005
Migpal Migpal is offline
Miembro
 
Registrado: jul 2005
Ubicación: Colombia
Posts: 91
Poder: 19
Migpal Va por buen camino
Si manejas Dataset, entonces en la propiedad datasuorce pones el datasource
de la tabla provincia.

y en el SQL text del dataset pones select * from alumnos where fkprovincia=kprovincia.
Responder Con Cita
  #3  
Antiguo 24-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si, pero la pregunta es con FireBird, y que yo sepa no pueden hacerse consulta con tablas que estén en 2 bases de datos distintas.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 25-11-2005
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, una manera de intentarlo seria poniendo dos componentes de conexion a las dos diferentes bases de datos, 1 TDataSet TQuery(llamemosle qAlumnos) conectado a la BD que tiene la tabla "Alumnos", en ese TQuery poner la consulta de la tabla "Alumnos" que traeria el codigo de la "Provincia". Luego recorrer dicho "qAlumnos" dandole inicio a otro TQuery(llamemosle qProvincias) creado esta vez en tiempo de ejecución y conectado a la otra BD (la que tiene la tabla "Provincias") que diga algo como
Código SQL [-]
select p.descripcion from provincia p where p.codigo=:cod_provincia
y en el bucle donde se rrecorre el qAlumnos pasarle los parametros al qProvincias y en ese mismo bucle ir descargando dato por dato en algun otro componente por ejemplo: Un TRxMemoryData que tenga los campos necesarios.

Espero me haya hecho entender y que sobre todo te sirva de algo .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 25-11-2005 a las 15:29:54.
Responder Con Cita
  #5  
Antiguo 25-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por marcoszorrilla
Si, pero la pregunta es con FireBird, y que yo sepa no pueden hacerse consulta con tablas que estén en 2 bases de datos distintas.
Marcos, tengo dudas respecto a esto. Es decir, sé que no se pueden hacer consultas SQL en Firebird que crucen dos bases distintas. Pero en este caso pienso que debe funcionar ya que se hace a nivel de componentes. Una componente está conectada a la tabla de alumos de una base e imagino que la propiedad DataSource que menciona Migpal no necesita saber a qué DataSet está conectado ese DataSource ni de dónde toma los datos. Entonces, usando un segundo DataSet conectado al catálogo de provincias de la otra base debería funcionar ¿no?

// Saludos
Responder Con Cita
  #6  
Antiguo 25-11-2005
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Lo que dice roman tambien es lo que yo he creido y por eso saque dichas conclusiones, pues a nivel de componentes ya es otra cosa.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 25-11-2005
El_Raso El_Raso is offline
Miembro
 
Registrado: oct 2003
Posts: 135
Poder: 21
El_Raso Va por buen camino
Uso FIBPlus... tambien se podria con ellas?
Responder Con Cita
  #8  
Antiguo 25-11-2005
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por El_Raso
Uso FIBPlus... tambien se podria con ellas?
Si, claro, seria lo mismo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #9  
Antiguo 30-01-2007
Ricomarz Ricomarz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Ensenada B.C
Posts: 18
Poder: 0
Ricomarz Va por buen camino
Perdon yo tengo el mismo problema

Hola yo tengo el mismo problema !!

Quiero hacer una consulta en dos bases de datos diferentes ... en la primera consulto cuatro tablas, de las cuales obtengo el grupo,salon,capacidad y el num de empleado, este ultimo entrara como parametro en la segunda BD (tabla empleados) de la cual obtendre el nombre del maestro ......

Yo utilizo dos Data Modulos para c/ BD, en cada uno hago la conexion a la BD por medio de un Conexion String ... estoy utilizando el componente ADO ...

El problema es que no se si lo que stoy haciendo este bien, aqui esta lo que hago para obtener esos datos ...
Código Delphi [-]
 
procedure ObtenerDatosMaestroGrupo(per,mpio:string);
var idmpio,reg,emp:integer;
begin
idmpio:=strToInt(muncipio(mpio));
 
dmprincipal.QBuscar.Close;
dmprincipal.QBuscar.SQL.Text:='Select pe.periodo, g.salon, g.grupo, g.capacidad, g.empleado as numemp '+
'From grupos g, periodos pe, materias ma, cursos cu '+
'Where pe.id_periodo=g.id_periodo and ma.clave_materia=g.clave_materia '+
'and cu.id_curso=ma.id_curso and cu.id_mpio=:idmpio and pe.periodo=: per '+
'Order by cu.id_mpio,g.grupo';
dmprincipal.QBuscar.Parameters.ParamByName('per').value:=per;
dmprincipal.QBuscar.Parameters.ParamByName('idmpio').value:=idmpio;
dmprincipal.QBuscar.Open;
reg:=dmprincipal.QBuscar.Recordset.RecordCount;
if reg>0 then
begin
emp:= dmprincipal.QBuscar.FieldByName('numemp').value;
 
dmrechum.QRechum.Close;
dmrechum.QRechum.SQL.Text:='Select ap_pat,ap_mat,nom_empl,num_empl from pcrhac02 where num_empl=:nemp';
dmrechum.QRechum.Parameters.ParamByName('nemp').Value:=emp;
dmrechum.QRechum.Open;
 
FRepgrupos.Preview;
end
else
begin
FidioConceptosyGrupos.mensaje.Caption:='No existen grupos vigentes en el periodo '+ per;
FidioConceptosyGrupos.mensaje.Visible:=true;
end;
end;
Maestro Grupo Salon Capacidad
Ricardo A1 200 10
Ricardo A2 201 10


Los valores que me arrogan son los correctos a excepcion de que el maestro me lo duplica para todos los grupos, siendo que es diferente el maestro ... No se si hay otra forma de hacerlo ... espero puedan ayudarme ..

Saludos... espero sus respuestas y/o sugerencias

Última edición por marcoszorrilla fecha: 30-01-2007 a las 17:25:13.
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


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


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