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)
-   -   Ampliar consulta en TQUERY (https://www.clubdelphi.com/foros/showthread.php?t=75294)

Mir 11-08-2011 10:03:23

Ampliar consulta en TQUERY
 
Hola chic@s soy nueva en Delphi y me gustaria haceros una consulta:

Tengo 2 DBGRIDS conectados cada uno con su ADOQRY y su DATASOURCE.
Cargo el DBGRID1 con sus valores y cuando hago click en un registro del DBGRID1 me aparece en el DBGRID2 los datos relacionados con el registro seleccionado en el DBGRID1.

El problema es que el DBGRID1 es MULTIPLESELECTION y si seleccionan otro registro del DBGRID1 tiene que aparecer en el DBGRID2 los nuevos valores + los anteriores.
El problema es que no sé como ampliar la consulta.

En el ADOQry2 TStrings tengo la Consulta: SELECT ..... WHERE (((PARAM.NOM)= :IDParam))

Esto es lo que utilizo para cargar el DBGRID2:
Código Delphi [-]
  ADOQry2.Close;
  ADOQry2.Parameters.ParamByName('IDParam').Value :=strParam;
  ADOQry2.Open;
Pero solo me carga los registros relacionados con el ultimo valor seleccionado

Tambien he probado:

ADOQry2 TStrings vacio.
Código Delphi [-]
 
  ADOQry2.Close; (no hagp clear pq quiero matener los valores previos)
  sSQL:= 'SELECT ...... FROM...WHERE (((PARAM.NOM)= :IDParam))';
  ADOQry2.SQL.Add(sSQL);
  ADOQry2.Parameters.ParamByName('IDParam').Value :=strParam;
  ADOQry2.Open;
Pero la segunda vez que ejecuto me da error.

Me podeis ayudar a solucionar esto? Muchisimas gracias por vuestra ayuda!!!

newtron 11-08-2011 10:40:32

Hola.

Bienvenida al club. En principio te recomendaría que leyeras la guía de estilo (a ver si aprendo a poner el link en las palabras), en ella verás que es conveniente los trozos de código marcarlos como tal para que salgan tabulados y se puedan leer con más facilidad.

En respuesta a tu pregunta te diré que una cosa que puedes hacer es armar una consulta en función al número de lineas del grid que tengas seleccionada. Si tienes solo una linea seleccionada estaría correcto de la forma que lo haces actualmente pero si tienes dos tendrías que cambiarla de esta forma:

Código:

SELECT ..... WHERE ((PARAM.NOM= :IDParam1) OR (PARAM.NOM= :IDParam2))
y así sucesivamente

Yo personalmente haría un bucle que en función del número de lineas seleccionadas fuera creando una variable con la consulta y cuando acabe la lanzas.

Saludos

Mir 11-08-2011 10:56:51

Hola Newtron,
Muchas gracias por tu respuesta, tendré en cuenta lo que me comentas del código.
Mi idea era ir ampliando la consulta en el momento 'click' de seleccion de registro, es decir que me añadiera a la seleccion anterior la nueva busqueda.

Lo que tu me propones es que con cada click de seleccion haga una nueva consulta con todos los registros seleccionados verdad?
Ahora pruebo!

Gracias de nuevo!

newtron 11-08-2011 11:01:02

Cita:

Empezado por Mir (Mensaje 409167)
Lo que tu me propones es que con cada click de seleccion haga una nueva consulta con todos los registros seleccionados verdad?

Afirmativo


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

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