Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Enlazar varios Combobox a un DBGrid. (https://www.clubdelphi.com/foros/showthread.php?t=38900)

Kenlyr 03-01-2007 22:35:59

Enlazar varios Combobox a un DBGrid.
 
Hola Tod@s, si alguin me pudiera proveer alguna ayudatita se lo agradeceria. soy nueva en esto de la programacion y estoy un poco confundida. Estoy diseñando una aplicación que utilice 4 ComboBox y un DBGrid que dependiendo de los items seleccionados en los ComboBoxes se despliegue la información en el DBGrid, es decir se tiene que hacer la busqueda con todos los comboBoxes y desplegar la informacion en el DBGrid.

Cada ComboBox tiene 3,4 o 5 Items y todos tiene que estar relacionados con una tabla donde estan registrado en un solo campo todo lo que contiene los comboBoxes unidos, es decir que se podria hacer la busqueda especificando like o %'' % para que encuentre por lo menos las palabra o letras relacionadas a los comboBoxes.


Tengo en un datamodule mi conexion ADO ,un ADOQuery , un Datasource los cuales ya estan conectados o relacionados a la vez con el DBGrid.

Las tablas que se van a relacionar para hacer la busqueda con los comboBoxes son tres.

La primera tiene los registros donde contiene los Itemes que estan en los comboboxes.

La segunda tabla contiene Alertas que se relacionan con un campo de nombre
en la tabla primera y,

La tercera es la que contiene la informacion a desplegar en el DBGrid que esta relacionada con un campo de la segunda tabla. Para obtener la inf. en el DBGrid en base a la seleccion de los ComboBoxes es necesario relaccionar esas tablas.

Creo que en este caso se haria un join en la consulta o busqueda a hacer.

Necesito saber como hacer esa conexion, si alguien me pudiera orientar me serviria de mucha ayuda.

vtdeleon 03-01-2007 23:17:59

Saludos

Que base de datos utilizas?

Verifica si tu base de datos soporta containing.

La tabla que muestra el contenido en el DbGrid podría tener una consulta SQL fija y solo modificar sus condicionales
Código SQL [-]
Select campo1, campo2,...campoN
from tabla1
where campo1 containing :combox1 and campo2 containing :combox2.....

Kenlyr 04-01-2007 15:40:20

Gracias por tu atencion.

Una cosa todos los comboBoxes estan en un mismo campo de una the las tablas, lo que sucede con esto es que como ese campo continiene muchos registro con palabras combinadas una manera de que el usuario pueda combinarlos es tener varios comboBoxes para que el obtenga si existe lo que busca.

Yo podia repetir el mismo campo de la tabla para cada comboBox en el ejemplo que me hiciste?

Kenlyr 04-01-2007 15:41:02

Otra cosa la BD que uso es Oracle

Maury Manosalva 04-01-2007 15:54:36

Uso del DBLookUpComboBox
 
Mira este ejemplo se que quizas te pueda ayudarm, yo utilizo los mencionados en el titulo y me funcionan de esta manera esta es una consulta que hice justo para lo que tu necesitas, me cuenta como te va, aunque esto lo hice con MySQL pueda que te funcione para Oracle que dices es lo que tienes. Bueno me cuentas.

Maury Manosalva.
Bucaramanga, Colombia

Código Delphi [-]
 with DMReportes.QryConsRepEme do
     begin
     Close;
     SQL.Clear;
     ConsRepEme := 'Select RE.IdRepEmergencia "Nro. Reporte", TE.NomTipEmergencia "Tipo", RE.FechaRep "Fecha", RE.HoraRep "Hora", RE.NomReportante "Persona que Reporta", RE.Telefono "Teléfono",';
     ConsRepEme := ConsRepEme +' RE.RepSuceso "Reporte Suceso", E.NomEstacion "Estación Asignado", B.Nombarrio "Barrio", EE.NomEdoEmergencia "Estado Actual", CR.NomCanalRep "Canal de Reporte", RE.DirEmergencia "Dirección", RE.LogUsuario "Usuario" from tabrepemergencia RE,';
     ConsRepEme := ConsRepEme +' tabtipemergencia TE, tabestacion E, tabbarrios B, tabedoemergencia EE, tabcanalrep CR';
     ConsrepEme := ConsRepEme +' where RE.IdtipEmergencia = TE.IdTipEmergencia and RE.IdEstacion = E.IdEstacion and RE.IdBarrio = B.IdBarrio and RE.IdEdoEmergencia = EE.IdEdoEmergencia and RE.IdCanalReporte = CR.IdcanalReporte';

if (cmbTipEmergencia.KeyValue <> null) then
     ConsrepEme := ConsRepEme +' and TE.IdTipEmergencia = '+cmbTipEmergencia.KeyValue; // aca uso cada uso de los combos y va generando la consulta dependiendo de lo que tenga escogido
     if (cmbBarrio.KeyValue <> null) then
     ConsrepEme := ConsRepEme +' and B.IdBarrio = '+cmbBarrio.KeyValue;
     if (cmbCanReporte.KeyValue <> null) then
     ConsrepEme := ConsRepEme +' and CR.IdCanalReporte = '+cmbCanReporte.KeyValue;
     if (cmbEstacion.KeyValue <> null) then
     ConsrepEme := ConsRepEme +' and E.IdEstacion = '+cmbEstacion.KeyValue;
     if (cmbEstado.KeyValue <> null) then
     ConsrepEme := ConsRepEme +' and EE.IdEdoEmergencia = '+cmbEstado.KeyValue;
     ConsrepEme := ConsRepEme +' order By IdRepEmergencia';
     SQL.Add(ConsRepEme);
        open;
    grdRepEme.Refresh;

Kenlyr 09-01-2007 21:19:34

Hola Maury, Gracias por el codigo, el que utilice en mi programa es bastante parecido al que me pasaste pues recibi una ayudita de alguien en mi oficina y al comparar con el tuyo es bastante parecido, Gracias Mil.

Y si me funciona :) .

Maury Manosalva 09-01-2007 23:36:13

O; de Nada
 
Ok pasa espo estamos en estos foros para colaborar en lo que se pueda.
Saludos.

Maury Manosalva.
Bucaramanga, Colombia.


La franja horaria es GMT +2. Ahora son las 07:53:06.

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