Ver Mensaje Individual
  #1  
Antiguo 08-01-2017
koalasoft koalasoft is offline
Miembro
 
Registrado: Oct 2004
Ubicación: Tenosique Tabasco
Posts: 86
Reputación: 14
koalasoft Va por buen camino
Buscar entre 3 tablas y mostrarlo en DBText el Resultado

Estimados tengo el siguiente detalles.

Tengo 3 Tablas diferentes con los siguientes campos:

Código:
ONT.db
ID_ONT
MAC
SERIE
TIPO
FOLIO
 
CLIENTES.db
ID_CL
NOMBRE
DIRECCION
TELEFONO
FOLIO
 
CTRL.db
BOARD
VELOCIDAD
STATUS
ID_CL
ID_ONT
FOLIO
Es una tabla (ONT.db) que es un equipo, el de clientes (cliente.db) y una tabla para llaver el control (ctrl.db)

Lo que pretendo es que ya que en la tres tablas tiene el campo FOLIO que es generado al trabajar en la tabla CTRL.db, en este último guardo solo los ID de cliente y equipo (ont) para que no haya redundancia de información en las tablas, es por eso que solo guardo el ID de cada uno.. ahora bien ..

Tengo el siguiente escenario...

coloque 3 query en el form, uno para cada tabla QueryONT, QueryCL QueryCTRL,, coloque unos DBTexto donde esta la sección donde aparecerá el nombre del cliente, en el otra sección los datos del equipo (ont) y lo demás datos que tiene la tabla CTRLONT igual en unos DBText.

Tengo este código...


Código Delphi [-]
with QueryCTRL do          // Busqueda por Modelo y Tipo
 begin
   Close;
   SQL.Clear;
   // ------------------------------------------------------------
   // Se ultilizó el PArametro JOIN para unir las otras Tablas
   // relacionando el Campo FOLIO en todas ellas siempre y cuando
   // Se cumpliera la condicion de busqueda del ONT ya registrado.
   // ------------------------------------------------------------
   SQL.Add('SELECT * FROM CTRL.db CTRL ');
   SQL.Add('join CLIENTES.db CL on CTRL.FOLIO = CL.FOLIO ');
   SQL.Add('join ONT.db ONT on CTRL.FOLIO = ONT.Folio ');
   SQL.Add('WHERE BOARD_ONT=:BOARD_ONT');  
   // --------------------------------------------------------
   //  Valores de búsqueda para el tablero.
   // --------------------------------------------------------
   ParamByName('BOARD_ONT').AsInteger := StrToInt(Edit1.Text);
   Open;
   if QueryCTRL.IsEmpty then
    Begin
    msError('El ONT no se encuentra registrado, porfavor verifica los datos.','No existe Datos..');
    End
     Else
      Begin
      Bok.Enabled := True;
      End;
 end;

Use la opción join ya que dice que puedes checar la similitud de campos entre tablas .... si me hace la búsqueda cn la condición que le puse .. pero en el fomulario no me muestra los datos restantes del cliente (nnombre, direccion, tel,etc..) y equipo ont (MAC, SERIE, TIPO)..

Me faltará algo para que e muestre os datos restantes teniendo solo relacionado entre ellos el folio??


Gracias !!

Última edición por Casimiro Notevi fecha: 08-01-2017 a las 11:00:28.
Responder Con Cita