Club Delphi  
    Paypal   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 19-01-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 12
Catublipas Va por buen camino
Realmente yo no necesito mostrar ni guardar los datos de la primera consulta, pero si que tienen que servir de filtro para la segunda, es decir, que coja los proyectos en la primera tabla, y que la segunda haga la consulta de todos esos proyectos.
Responder Con Cita
  #2  
Antiguo 19-01-2015
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por Catublipas Ver Mensaje
Realmente yo no necesito mostrar ni guardar los datos de la primera consulta, pero si que tienen que servir de filtro para la segunda, es decir, que coja los proyectos en la primera tabla, y que la segunda haga la consulta de todos esos proyectos.
Pues, disculpa, pero sigo sin entender:
El usuario elige un proyecto, ejemplo, el 6
Buscas en la BD1 el proyecto con el número 6.
Buscas en la BD2 los registros con proyecto número 6.
Se supone que tienes un query con el registro del proyecto 6 de la BD1.
Se supone que tienes un query con los registros del proyecto 6 de la BD2.
¿Y ahora qué quieres hacer?
Responder Con Cita
  #3  
Antiguo 19-01-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 12
Catublipas Va por buen camino
No Casimiro el usuario elige un ProyectManager, ejemplo, el 6, hacemos la búsqueda de los proyectos en la BBDD1 de ese ProyectManager y este tiene 3 proyectos:
001
002
003

A continuación quiero buscar cada una de las facturas de esos proyectos en la BBDD2:
001-->1,2,3
002-->4,5,6
003-->7,8,9
Responder Con Cita
  #4  
Antiguo 19-01-2015
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Lo siento, no entiendo cómo están estructuradas y relacionadas esas tablas y bases de datos.

Pon un ejemplo con los datos que has escrito antes.

BD, tabla, campos, valores
Responder Con Cita
  #5  
Antiguo 19-01-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 12
Catublipas Va por buen camino
Las bases de datos no están relacionadas de ahí mi problema,
te expongo lo que he intentado hacer con tu ayuda a ver si así ves mejor el problema:

Código Delphi [-]
procedure TPrueba1Form.Button1Click(Sender: TObject);
begin
  IBQuery1.Close;
  IBQuery1.Open;
  IBQuery2.Close;
  IBQuery2.Open;
  ClientDataSet1.Open;
  while not IBQuery1.eof do
  begin
    ClientDataSet1.Append;
    ClientDataSet1.FieldByName('PROYECTO').Value:= IBQuery1.FieldByName('PROYECTO').Value;
    ClientDataSet1.post;
    while not IBQuery2.eof do
    begin
      ClientDataSet1.Append;
      if IBQuery1.FieldByName('PROYECTO').Value = IBQuery2.FieldByName('PROYECTO').Value then
      begin
        ClientDataSet1.FieldByName('FACTURA').Value:= IBQuery2.FieldByName('NUMEROFAC').Value;
        ClientDataSet1.post;
      end;
      IBQuery2.next;
    end;
    IBQuery1.next;
  end;
end;

Previamente cree en el ClientDataSet los Fields PROYECTO y FACTURA.
De esta manera me lista los proyectos perfectamente pero las facturas me salen vacías, de esta forma:

PROYECTO FACTURA
001
002
003
004


Es un avance pero se me escapa algo. No se si esta información te sirve de algo.

BBDD1

Tabla PROYECTMANAGER

CODIGOPM-->6
PROYECTOS -->1,2,3
NOMBRE--> Carlos

BBDD2

Tabla FACTURAS

PROYECTO-->1
NUMEROFAC-->001,002,003
IMPORTE -->100€,200€,300€

PROYECTO-->2
NUMEROFAC-->004,005,006
IMPORTE -->1500€,2500€,3500€

PROYECTO-->3
NUMEROFAC-->007,008,009
IMPORTE -->50000€,60000€,30000€

Última edición por Catublipas fecha: 19-01-2015 a las 14:15:31.
Responder Con Cita
  #6  
Antiguo 19-01-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 12
Catublipas Va por buen camino
Vale Casimiro, casi lo tengo:

Código Delphi [-]
procedure TPrueba1Form.Button1Click(Sender: TObject);
begin
  IBQuery1.Close;
  IBQuery1.Open;
  IBQuery2.Close;
  IBQuery2.Open;
  ClientDataSet1.Open;
  while not IBQuery1.eof do
  begin
    while not IBQuery2.eof do
    begin
      ClientDataSet1.Append;
      if IBQuery1.FieldByName('PROYECTO').Value = IBQuery2.FieldByName('PROYECTO').Value then
      begin
        ClientDataSet1.FieldByName('PROYECTO').Value:= IBQuery1.FieldByName('PROYECTO').Value;
        ClientDataSet1.FieldByName('FACTURA').Value:= IBQuery2.FieldByName('FACTURA').Value;
        ClientDataSet1.post;
      end;
      IBQuery2.next;
    end;
    IBQuery1.next;
  end;
end;

El problema que solo me muestra el primer proyecto de ese ProyectManager esto me muestra con respecto al ejemplo anterior me muestra:

PROYECTO-->1
NUMEROFAC-->001,002,003
IMPORTE -->100€,200€,300€
Responder Con Cita
  #7  
Antiguo 19-01-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 12
Catublipas Va por buen camino
Perdona las comas las he puesto yo, pero ya tengo la solución(aunque tengo un problema):

Código Delphi [-]
procedure TPrueba1Form.Button1Click(Sender: TObject);
begin
  IBQuery1.Close;
  IBQuery1.Open;
  IBQuery2.Close;
  IBQuery2.Open;
  ClientDataSet1.Open;
  while not IBQuery1.eof do
  begin
    while not IBQuery2.eof do
    begin
      ClientDataSet1.Append;
      if IBQuery1.FieldByName('PROYECTO').Value = IBQuery2.FieldByName('PROYECTO').Value then
      begin
        ClientDataSet1.FieldByName('PROYECTO').Value:= IBQuery1.FieldByName('PROYECTO').Value;
        ClientDataSet1.FieldByName('FACTURA').Value:= IBQuery2.FieldByName('DOCNUM').Value;
        ClientDataSet1.post;
      end;
      IBQuery2.next;
    end;
    IBQuery1.next;
    IBQuery2.First;
  end;
end;

Mi problema ahora es que es extremadamente lento(10 segundos).¿Se te ocurre algo?
Y estoy contigo, es una enorme chapuza, y porque no has visto la base de datos, si no te daría algo.
De todas formas muchas gracias de nuevo!
Responder Con Cita
  #8  
Antiguo 19-01-2015
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por Catublipas Ver Mensaje
BBDD1

Tabla PROYECTMANAGER

CODIGOPM-->6
PROYECTOS -->1,2,3 ???
NOMBRE--> Carlos

BBDD2

Tabla FACTURAS

PROYECTO-->1
NUMEROFAC-->001,002,003 ???
IMPORTE -->100€,200€,300€

PROYECTO-->2
NUMEROFAC-->004,005,006
IMPORTE -->1500€,2500€,3500€

PROYECTO-->3
NUMEROFAC-->007,008,009
IMPORTE -->50000€,60000€,30000€
A ver, no me digas que los datos están guardados de esa manera, valores separados por comas.
¿A qué lumbreras se le ocurrió esa chapuza inmensa, además dividido en 2 bases de datos?

Creo que necesitas hacer una reestructuración del sistema. Eso es una chapuza tremenda.
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
Escuchar BBDD Guti13 Conexión con bases de datos 2 03-11-2014 17:49:23
Acceso a BBDD hybrid Conexión con bases de datos 1 14-11-2009 17:55:03
Consulta a tabla de bbdd Firebird externa Gonbamon Firebird e Interbase 4 05-07-2008 05:32:26
copia de bbdd majosf Conexión con bases de datos 3 18-11-2005 20:49:19
BBDD database.wrk ??? Mulero Conexión con bases de datos 8 03-11-2005 11:24:31


La franja horaria es GMT +2. Ahora son las 22:24:20.


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