PDA

Ver la Versión Completa : Problemas al listar desde un ADOQuery


cai
12-06-2005, 12:50:03
Al intentar listar una seleccion de valores a través de varios QrdbText que tengo asociados a través del DataSet a un TAdoQuery solo se me muestra un valor repetido tantas veces como valores diferentes deberia de devolver la consulta, es decir:

Nombre 1ºApellido 2ºApellido Cantidad Tipo Seccion Fecha
Antonio Romero Garcia 12 A2 Primaria 12/6/2005
Antonio Romero Garcia 12 A2 Primaria 12/6/2005
Antonio Romero Garcia 12 A2 Primaria 12/6/2005
Antonio Romero Garcia 12 A2 Primaria 12/6/2005
(asi hasta 11 veces)



Cuando ejecuto la accion para listar tengo este código:

procedure TForm1.Listar_CopiasExecute(Sender: TObject);
begin
Tabla_Copias.Open;
Application.CreateForm(TFrm_Copias, Frm_Copias);
ADOQuery1.Prepared;
ADOQuery1.Open;
Frm_Copias.QuickRep1.Preview;
Frm_Copias.Free;
Tabla_Copias.Close;
end;

y la consulta Sql que le tengo al AdoQuery es la siguiente:

Select P.Nombre, P.Apel1, P.Apel2, C.Cantidad, C.Tipo, S.Nombre,C.Fecha
From Profesores as P, Copias as C, Seccion as S
Where P.Cod_Profesor=C.Cod_Profesor and C.Cod_Seccion=S.Cod_Seccion
Order by C.Fecha Desc

además quería que me agrupase por nombre y apellidos, pero si intento poner la siguiente clausula:

Group by P.Nombre, P.Apel1, P.Apel2

me dice que no puedo hacer eso sin agrupar tambien los demás valores del select.
Cuando creo la sentencia SQL estoy trabajando directamente con el nombre de las tablas que tengo en la base de datos, no creo ningun ADOTable puesto que creo que la SQL trabaja directamente sobre las tablas de la BD.

marcoszorrilla
12-06-2005, 13:34:53
No veo para que abres la tabla Copias, si tienes la conexión de la BD abierta como es lógico, mediante una AdoConnection, lo único que tienes que hacer es lanzar la Consulta SQL.

Para mayor seguridad pon una rejilla y conéctala, pues en el informe sale lo que obtengas en la consulta, si el informe no te da lo que quieres es porque la consulta no está bien planteada.

En cuanto a la cuestión de agrupar, todos los campos tienen que estar agrupados o ejecutar alguna función sobre ellos, Sum(), Average()......

Un Saludo.

cai
13-06-2005, 18:31:16
No veo para que abres la tabla Copias, si tienes la conexión de la BD abierta como es lógico, mediante una AdoConnection, lo único que tienes que hacer es lanzar la Consulta SQL.

Para mayor seguridad pon una rejilla y conéctala, pues en el informe sale lo que obtengas en la consulta, si el informe no te da lo que quieres es porque la consulta no está bien planteada.

En cuanto a la cuestión de agrupar, todos los campos tienen que estar agrupados o ejecutar alguna función sobre ellos, Sum(), Average()......

Un Saludo.
En la rejilla me muestra bien todos los campos, asi que la consulta tiene que estar bien. Solo me muestra la primera fila de la consulta repetida tantas veces como valores devuelve la consulta.