Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Capturar resultado de consulta con group by (https://www.clubdelphi.com/foros/showthread.php?t=84779)

The_Mule 04-12-2013 21:45:04

Capturar resultado de consulta con group by
 
Estimados Amigos:
Espero Uds. me puedan ayudar con la duda que tengo, no encuentro a quien recurrir.
Tengo dos bases de datos en Paradox, la segunda se encuentra enlazada a la primera por su campo clave. La primera base de datos contiene (entre otros campos) un código de categoría y la segunda los datos correspondientes a cada categoría.
En un Query realizo una consulta para obtener el conteo de cada una de las categorías existentes en la primera base de datos en un rango de dos fechas:

Select RedBook.CodigoPericia, Pericias.NombrePericias, Count (RedBook.CodigoPericias) From RedBook
Inner Join Pericias On RedBook.CodigoPericias = Pericias.CodigoPericias
Where RedBook.FechaEntra Between :fecha_inicial and :fecha_final
Group By RedBook.CodigoPericias, Pericias.NombrePericias


La consulta funciona bien volcando los datos obtenidos en un dbgrid, pero yo necesito manejar esos resultados.
Luego de horas leyendo encontré una línea de código:


variable := Query1.Fields[2].Value;

la cual si funciona pero consigo únicamente el conteo correspondiente a la primera categoría (tengo 5 categorías distintas) y no sé cómo obtener y manejar los conteos de las categorías restantes.
Por favor si Uds. supieran como se hace les agradecería que me echaran una mano ya que soy novato en SQL y necesito terminar este programita porque mi jefe me tiene a los saltos con esto. Desde ya muy agradecido.

Caminante 05-12-2013 01:53:25

No se si entendi bien; pero si los datos los muestra correctamente en el dbgrid supongo que los conteos que necesitas estan en cada fila asi que solo necesitas navegar en el dataset.

Seria bueno si me aclaras un poco mas tu problema...

Saludos

ginkaku 05-12-2013 02:14:18

saludos
 
Hola, si tu consulta esta bien hecha y muestra lo que necesitas, solo debes recorrer tu Dataset o Query como te han sugerido. Ej:
Código PHP:

TIPO->Active=true
TIPO->Open();  //abres tu dataset o query
TIPO->First();   //posicionas al inicio
   
while (!(TIPO->Eof)){ //mientras no sea fin de la consulta
           
texto TIPO->FieldByName("DESCRIPCION")->Value;    //manipulas los datos a tu antojo con el nombre del campo
            
id TIPO->FieldByName("ID")->Value;
           
ComboBox1->AddItem(texto,(TObject*)StrToInt(id));
           
TIPO->Next();  //pasas a la siguiente tupla
   
}
TIPO->Close();
TIPO->Active=false

En ese pequeño ejemplo cargo un combobox con los datos de mi consulta. Ojala te haya entendido un saludo.
Pdt: nunca tengo el delphi a mano :D:D, pero te sera muy simple pasar a delphi lo que necesites

The_Mule 06-12-2013 02:48:48

Agradecimiento
 
Estimados Caminante y Ginkaku, ya solucione mi problema, entendí a lo que se referían con navegar el DateSet y pude lograr lo que quería hacer. No hay manera de agradecerles con palabras la ayuda que me brindaron, estoy sumamente agradecido, en especial por el fragmento de código subido por Ginkaku, lo adapté a Delphi y funcionó a las mil maravillas. Mil Gracias Maestros. :)


La franja horaria es GMT +2. Ahora son las 19:22:29.

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