La Web del Programador: Comunidad de Programadores
 
    Pregunta:  31361 - AGRUPAR DATOS POR FECHAS
Autor:  Ray Muñoz
Un saludo a todos.
Soy un novato en Delphi. Mi pregunta es la siguiente:
- Tengo una tabla en Paradox con los campos NumCliente (Numeric), FechaCompra (Date), CodArticulo (Numeric), CostoUnitario (Money), Importe (Money). En esta tabla manejo información de todo el año y quisiera una especie de filtro en un DBGrid que me pudiera mostrar los movimientos exclusivos de Enero, Febrero, etc. y de un número de cliente en particular. Es decir, deseo saber los movimientos del Cliente No. 01 (por ejemplo) durante el mes de enero, febrero, etc. A su vez, deseo un concentrado general de todos los movimientos de cada mes y en forma anual. Posteriormente, en un QuickReport, deseo poder imprimir los movimientos de un cliente en un mes en particular, el concentrado mensual y el concentrado anual.

Ojalá pudieran ayudarme. Gracias por su atención.

  Respuesta:  Hugo O.H.
hola ray,

voy a suponer que sabes algo de sql y que has manejado el componente TQuery (si no es asi, te recomiendo que lo hagas, porque son la base para aplicaciones de escritorio eficientes)...

entonces, lo que necesitas es un TQuery asociado al dbgrid (tal como lo asocias con una tabla), y pasarla una consulta pareceida a:

SELECT * FROM tutabla
WHERE EXTRACT(MONTH FROM FechaCompra )=1
AND NumCliente = 123

lo que obtendrias aqui sería las compras del mes de enero del cliente 123... lo unico que necesitarias es activar la consulta y el dbgrid se encarga de actualizarse...

puedes hacerlo mas elegante utilizando consultas parametrizadas:

SELECT * FROM tutabla
WHERE EXTRACT(MONTH FROM FechaCompra )=:mes
AND NumCliente = :numcliente

y utilizar el metodo paramByName del TQuery para asignarle valores en tiempo de ejecucion a los parametros :mes y :numcliente...

y para generar el reporte pues simplemente utilizas el TQuery como data source del mismo y realizas el mismo procedimiento que con cualquier tabla...

saludos...

EOF