![]() |
Consulta de rango de fechas con sql
He entrado en varias ocasiones como visitante a este club, y hoy por fin me he unido como participante, quiero agradecer de antemano cualquier respuesta.
Mi problema es el siguiente: necesito hacer una consulta a una tabla que se llama ventas (la tabla es de Acces), lo que necesito saber es cuanto ha comprado un "distribuidor" x en un periodo de tiempo dado; por ejemplo : cuanto ha comprado el distribuidor con clave 1, del 1 de enero del 2005 al 15 de enero del 2005.... he leido varios problemas similares pero he probado las soluciones y no me han funcionado ... el codigo que tengo es el siguiente: datamodule2.Query1.Close; with datamodule2.Query1.SQL do begin clear; add('select(sum(cantidad_vta))'); add('from Venta where clave_dis='''+stringgrid1.Cells[0,f]+'''and fecha_vta>='''+'01012005'+''' and fecha_vta<='''+'16012005'+'''); datamodule2.Query1.Open; end; por ultimo nada mas : estoy trbajando con access 2003 y delphi 7 grax |
Hola.
datamodule2.Query1.Close; with datamodule2.Query1.SQL do begin clear; add('select(sum(cantidad_vta))'); add('from Venta where clave_dis='+stringgrid1.Cells[0,f]+'and fecha_vta between :fecha1 and :fecha2'); datamodule2.Query1.Params[0].Value := fecha1; // esta es de tipo Date datamodule2.Query1.Params[1].Value := fecha2; // esta es de tipo Date datamodule2.Query1.Open; end ////////// es mejor utilizar parametros para consultas de fechas, Saludos.... |
Muy posiblemente el formato en que pones las fechas no es el adecuado para Access. Normalmente los motores usan formatos con separadores entre el día, mes y año y entre unos y otros cambia el orden en que se colocan.
Desconozco cuál es el adecuado para Access pero por lo regular este problema desaparece cuando usas consultas parametrizadas. Pon tu consulta así:
Antes de abrir la consulta sustituyes los parámetros:
donde FechaInicial y FechaFinal son variables de tipo TDate con los valores adecuados. La componente Query será la encargada de traducir las fechas al formato correcto. Por cierto, en la consulta que tienes me parece que tampoco van los paréntesis que rodean a sum(cantidad_vta) ylos rangos de fechas los puedes especificar con BETWEEN:
EDITO: Bueno, veo que se me han adelantado y sin tanto rollo. :D // Saludos |
La franja horaria es GMT +2. Ahora son las 09:32:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi