Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Consultas DBGRID (https://www.clubdelphi.com/foros/showthread.php?t=51022)

peripla 04-12-2007 20:59:04

Consultas DBGRID
 
Tengo algunas inquietudes que no se como solucionar por eso acudo a ustedes. Hace mas de una hora que estoy buscando en los foros y no encuentro respuesta. Les cuento.
Primero quiero saber como agregar el numero de fila del dbgrid, y segundo como recorrer dicha grilla. El tema es que tengo dos grillas diferentes, con dos queryes diferentes, y si coinciden en determinados campos, debo agregar en la ultima columna de cada fila, a que fila de la otra grilla corresponde. Para ello debo recorrer las dos grillas, pero no se como hacerlo. Desde ya agradezco su ayuda.

Saludos

PD: Uso Delphi 7, SQLServer 2000, Database1, query1,query2,datasourse1 y datasourse2.

Gracias

Lepe 04-12-2007 21:58:44

Olvídate de los Grids, éstos son mera representación visual de los querys. El bucle, o lo que tengas que hacer, debes hacerlo sobre los querys:
Código Delphi [-]
query1.First;
while not query1.eof do
begin 
....
end;
El "número de fila" es irrelevante, deberías fijarte en la clave primaria de cada tabla en la que se basa el query.

Para encontrar un valor de un campo en otro query, puedes usar query1.Locate

A una pregunta general, una respuesta general. Si aportas más detalles, quizás podamos afinar más.

Saludos

peripla 04-12-2007 22:07:52

Mirá, son dos queryes distintas, ambas son un join de dos tablas(total 4 tablas), por eso no tengo id en la tabla. Ambas tienen dos campos en común, las cuales voy a buscar cuando logre colocar el numero de la fila.

Intente hacer lo que me dijiste....

Procedure FilaGrilla;
var
i:integer;
begin
i:=1;
frmacr351.query2.edit;
frmacr351.query2.first;
while not frmacr351.query2.eof do begin
frmacr351.query2.fieldbyname('[FILA]').asinteger:=i;
i:=i+1;
frmacr351.query2.next;
end;
end;

invalid use or keyword. Token '[FILA]'

Ahora estoy viendo como solucionar esto.
Luego ver lo del tocate...
No se que otro detalle decirte.

Muchas Gracias!!!!

Lepe 05-12-2007 14:17:21

1 - Cuando se necesita añadir un número de fila, normalmente se usa un Store Procedure de selección (no sé si será viable para tí, tampoco sé como definirlo en SQLSERVER). En dicho SP se hace el inner join devolviendo una columna más llamada Fila que va incrementando su valor.

2 - Otra opción: Realizar un Maestro-detalle con esas 2 querys por los campos que son iguales. Al hacer un clic en un grid, en el otro solo aparecen las filas con igual valor en dichos campos comunes. Si el segundo query no tiene ningún registro que coincida sus valores, se muestra vacío.

Hacerlo como pides, no te puedo ayudar, ya que nunca lo he hecho, quizás otro forista pueda ayudarte.

Por supuesto, si te interesa alguna de estas 2 soluciones, puedes preguntarme.

Saludos

peripla 05-12-2007 15:17:11

Te agradezco mucho por la atención. Pero debido al escaso conocimiento que tengo del dbgrid, opté por crear una tabla temporal, y luego hacer el select.

Muchas Gracias!


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

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