Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Consulta SQL no filtra por fecha

Estas en el tema de Consulta SQL no filtra por fecha en el foro de Visual Basic clásico en Foros del Web. Tengo un problema. Necesito filtrar con una fecha de inicio y una fecha final en una consulta SQL, para luego asignarle a un DataReport, pero ...
  #1 (permalink)  
Antiguo 08/03/2006, 19:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 19 años, 6 meses
Puntos: 0
Consulta SQL no filtra por fecha

Tengo un problema. Necesito filtrar con una fecha de inicio y una fecha final en una consulta SQL, para luego asignarle a un DataReport, pero no filtra los registros que estan dentro de los intervalos.

Tengo problemas en las fecha que son de tipo 02/03/2006 (dia-mes-año), pues obtiene registro del mes de febrero y tambien del mes de marzo.

La base de datos es Acces 2003 y tengo el Visual Basic 6

He intentado cambiando los tipos de datos de Fecha_Inicial y Fecha_Final a Variant, pero resulta igual.


La consulta es asi:
Dim Fecha_Inicial As Date
Dim Fecha_Final As Date

Fecha_Inicial = DateValue(TextFechaInicio.Text)
Fecha_Final = DateValue(TextFechaFinal.Text)

Consulta = "SELECT F.fecha, sum(F.subtotal) as subtotal1,sum(F.Descuento) as Descuento1, sum(F.iva) as IVA1, sum(F.total) as total1 FROM factura as F where F.cancelado= 1 and F.Estado = 'F' and F.fecha between datevalue(?) and datevalue(?) GROUP BY F.fecha"

Commando_Diarios.CommandText = Consulta
'Crea los parametros necesarios
Dim Parametro As Parameter
'Parametro de la fecha inicial del intervalo
Set Parametro = Commando_Diarios.CreateParameter("Fecha_inicio", adDate, adParamInput)
Commando_Diarios.Parameters.Append Parametro
'Parametro de la fecha final del intervalo
Set Parametro = Commando_Diarios.CreateParameter("Fecha_final", adDate, adParamInput)
Commando_Diarios.Parameters.Append Parametro
'Dejar un version preparada en el servidor
Commando_Diarios.Prepared = True

Commando_Diarios.Parameters.Item("Fecha_inicio") = DateValue(Fecha_Inicial)
Commando_Diarios.Parameters.Item("Fecha_final") = DateValue(Fecha_Final)

Set Tabla_reporte = New ADODB.Recordset
Set Tabla_reporte = Commando_Diarios.Execute
Set rep.DataSource = Tabla_reporte
rep.show
  #2 (permalink)  
Antiguo 09/03/2006, 09:22
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Concentremonos primero en el query. Un problema que me ha pasado es que el datapicker solo tiene fecha pero no hora. Otra cosa importante es el formato de la fecha. Para SQL Server podrías hacer convert(datetime, TextFechaInicio.Text, 103) o 101 dependiendo si lo quieres en dia/mes/año o mes/dia/año. Otra forma es formateando la fecha desde visual basic pero ahi si no se como hacerlo
  #3 (permalink)  
Antiguo 09/03/2006, 09:47
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Ya intentaste poner la fecha en el formato general. ?

Cita:
yyyy-MM-dd
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 09/03/2006, 10:27
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Hola

Tienes que formatear la fecha y meterla entre #. Por ejemplo

"SELECT ... WHERE fecha >#" & format(fecha_Inicial, "mm/dd/yyyy") & "#"

--Saludos--
  #5 (permalink)  
Antiguo 09/03/2006, 14:11
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cierto cierto... en access la fecha va entre #

Aunque me parece sin sentido ya que le quita lo standar
  #6 (permalink)  
Antiguo 13/03/2006, 18:54
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 19 años, 6 meses
Puntos: 0
Saben? la consulta no me funciona cuando son fechas de este tipo:
02/03/2006 sería día/mes/año y si tengo esta fecha 03/02/2006 seria dos fechas totalmente diferentes, pero las toma como si fuera una sola fecha y filtra los registros de las dos fecha, pero yo necesito solo de una a la vez.

He intentado filtrando con variable tipo fecha y luego tipo variant y formateando las fechas como me lo ha indicado pero esta consulta no funciona en esos casos.
  #7 (permalink)  
Antiguo 14/03/2006, 01:56
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Hola

No se si formateas la fecha correctamente, si tu tienes, por ejemplo en un text box, la fecha 02/03/2006 con formato dia/mes/año, para hacer la select tienes que escribir "SELECT ... WHERE fecha >#" & format(fecha_Inicial, "mm/dd/yyyy") & "#", es decir, si tienes una fecha tipo dd/mm/yyyy en el format metes mm/dd/yyyy.

Intentalo y nos comentas. Suerte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:08.