Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   uso del Group By (https://www.clubdelphi.com/foros/showthread.php?t=52940)

esimon 05-02-2008 13:47:47

uso del Group By
 
Hola saludo para todos.

voy a tratar de explicar que quiero hacer, estoy usando Delphi 7 y Access 2003, tengo los datos en 3 tablas, hotel, Provincia y Localidad, en hotel guardo el codigo de la provincia y de la localidad, estoy lo hago porque es mi tabla principal las otras son de mantenimientos.

el problema es que estoy haciendo un reporte en ReportBuilder en el cual uso un Label y en el onprint del mismo ejecuto esta condicion.
Código Delphi [-]
procedure TFrm_ReporteAgenciasViajes.ppLabel5Print(Sender: TObject);
   var ls_ImprimirLocalidad : string;
begin
      ls_ImprimirLocalidad := Qry_ImprimirAgenciasNumero_Localidad.Value;
      Qry_BuscarLocalidad.Close;
      with Qry_BuscarLocalidad do begin
      with Sql do begin
      clear;
      Add('Select * From Localidades');
      Add('where Numero_Localidad =');
      Add(''''+ls_ImprimirLocalidad+'''');
      Open;
ppLabel5.Caption := Qry_BuscarLocalidadDescripcion_Localidad.Value;
end;
end;
end;
esto funciona bien, pero si quiero agrupar las provincia y la localidad porque se repiten varia veces no lo puedo hacer,
al quien puedes decirme como lo hago?

mil gracias

marcoszorrilla 05-02-2008 15:04:29

Quieres decir que no puedes hacerlo porque te da algún error o símplemente que no sabes como hacerlo.

Un Saludo.

felipe88 05-02-2008 15:23:52

Porque no lo puedes hacer?, te da algun error... o quieres hacer dos agrupaciones, una por provincia y la otra por localidad.

Si con esto quieres colocar comilla ' '
Código Delphi [-]
Add(''''+ls_ImprimirLocalidad+'''');
Mejor usa
Código Delphi [-]
Add(QuotedStr(ls_ImprimirLocalidad));

esimon 05-02-2008 16:35:27

gracias felipe88 y marcos

dejame decirte que no me da ningun error, el esta funcionando bien, el problemas es que no me agrupa, me repieste mucho tanto la provincia como la localidad.

lo unico que quiere es que si una provincia se repite me la presente una sola ves, igual con la localidad.
Es que no se donde puedo usar la funcion GROUP BY.

marcoszorrilla 05-02-2008 17:00:56

Cita:

Empezado por esimon (Mensaje 263487)
Hola saludo para todos.

voy a tratar de explicar que quiero hacer, estoy usando Delphi 7 y Access 2003, tengo los datos en 3 tablas, hotel, Provincia y Localidad, en hotel guardo el codigo de la provincia y de la localidad, estoy lo hago porque es mi tabla principal las otras son de mantenimientos.

el problema es que estoy haciendo un reporte en ReportBuilder en el cual uso un Label y en el onprint del mismo ejecuto esta condicion.
Código Delphi [-]
procedure TFrm_ReporteAgenciasViajes.ppLabel5Print(Sender: TObject);
   var ls_ImprimirLocalidad : string;
begin       ls_ImprimirLocalidad := Qry_ImprimirAgenciasNumero_Localidad.Value;       Qry_BuscarLocalidad.Close;       with Qry_BuscarLocalidad do begin       with Sql do begin       clear;       Add('Select * From Localidades');
      Add('where Numero_Localidad ');
      Add(''''+ls_ImprimirLocalidad+'''');
      Add('Group by_Localidad');

      Open;
ppLabel5.Caption := Qry_BuscarLocalidadDescripcion_Localidad.Value;
end;
end;
end;
esto funciona bien, pero si quiero agrupar las provincia y la localidad porque se repiten varia veces no lo puedo hacer,
al quien puedes decirme como lo hago?

mil gracias



Este es un ejemplo de como agrupar.

Un Saludo.

esimon 05-02-2008 17:27:56

gracias marcos, cuando agrego la linea que escribiste me da un error de escritura y eso es logico digo pro el Group by_locliadad, creo que deberia ser Group By Localidad y localidad es el nombre de la tabla.

el caso es que no me funciona

marcoszorrilla 05-02-2008 17:40:17

Me he equivocado tienes que poner el nombre del campo.

UnSaludo.

esimon 05-02-2008 18:08:58

es que cuando uso el campo por el cual quiero agrupar da un error que dice que no se puedes agrupar por el campo seleccionador por '*'.

y si expreso los campos me dice ha intentado ejecutar una consulta que no incluye una expresion espesificada 'codigo_provincia' como parte de una funcion de agregado

Delphius 05-02-2008 18:14:10

esimon, la clausula GROUP BY obliga a que esté declarado el campo en SELECT. Dicho de otro modo:
Código SQL [-]
SELECT campoA, campoB, campoC
FROM TablaA
GROUP BY campoD

Provoca error, porque CampoD no está formando parte de select. La solución:

Código SQL [-]
SELECT campoA, campoB, campoC, campoD

Recomiendo la lectura y/o repaso de algún manual SQL.

Saludos,


La franja horaria es GMT +2. Ahora son las 10:22:02.

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