Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: Bazooka en Diciembre 28, 2011, 05:27:24 pm

Título: Problemas con devolución de registros en búsqueda por consulta
Publicado por: Bazooka en Diciembre 28, 2011, 05:27:24 pm
Hola amigos estoy haciendo una busqueda mediante una consulta SQl sobre acces y nada del otro mundo pero me esta complicando la vida por que me devuelve lo que ella quiere!!

(http://www.misimagenesgratis.com.ar/images/error_consulta.jpg)

En la imagen ilustro que el usuario coloca 2 fechas para buscar [entre... y...] las fechas las selecciona de un DateTimePicker y presiona un botón!
Vean que en la imagen esta capturada la búsqueda realizada entre el 1/08/2004 y el 12/08/2004 y solo debería mostrar los registros que estan en el recuadro naranja!! pero me devuelve un monto más..

Aca está el codigo que utilizo para realizar esa búsqueda :

Código: [Seleccionar]
Private Sub BuscarPorFecha()
 Dim date1 As Date
 Dim date2 As Date
 Dim sql As String
 
 date1 = FormatDateTime(d1.value, vbShortDate)
 date2 = FormatDateTime(d2.value, vbShortDate)
       
sql = "SELECT Ordenanzas.ID, Ordenanzas.FechaInicio, Ordenanzas.Asunto, " & _
"Ordenanzas.ref, Ordenanzas.ubicacion, Ordenanzas.estado From Ordenanzas " & _
"WHERE (((Ordenanzas.FechaInicio) Between #" & date1 & "# And #" & date2 & "#));"
 Call CargarORDENANZAS(sql)

End Sub


Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: seba123neo en Diciembre 28, 2011, 06:35:34 pm
Hola, nunca use ese FormatDateTime, siempre uso algo como Format(vFecha, "dd/MM/yyyy").

no trabajo con access, pero te paso una linea de codigo de un programa que busca por fecha haber si te sirve:

Código: (vb) [Seleccionar]
vStr = vStr + " WHERE fecha=#" & Format(DTFecha.Value, "dd/MM/yyyy") & "#
ese campo fecha es de tipo date o es un string ?

saludos.
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: Bazooka en Diciembre 28, 2011, 08:35:32 pm
Es del tipo DATE el campo que devuelve!!
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: YAcosta en Diciembre 29, 2011, 02:01:49 am
Asi sea del tipo date a veces te puede interpretar 11/08/2004 como 11 de agosto u 8 de noviembre. Ya le haria una modificacion a la propuesta de sebas que me parece mas segura a prueba de balas


Código: (VB) [Seleccionar]
vStr = vStr + " WHERE fecha=#" & Format(DTFecha.Value, "YYYY/MM/DD") & "#
Saludos
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: ADONAIRAFA en Diciembre 29, 2011, 02:19:12 am
Saludos a todos !!! ;D

Bazooka, trata a ver si puedes hacer un poco más sencilla la consulta. De todas maneras conseguí este ejemplo que te puede servir en la web de "Recursos Visual Basic 6.0", aquí está el link:

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/356-ejemplo-Between.htm (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/356-ejemplo-Between.htm)

Segun pude notar, las variables date1 y date 2 son de tipo Date, declaralas como String, e igual le asignas el 'value' respectivo del DataTimePicker y como tales colocalas en la consulta. De todas formas analiza el ejemplo de "Recursos Visual Basic"  y compara.

Espero pueda servirte de algo.


Saludos !!! ;D

Manuel F. Borrego S. 8)
Barcelona. Venezuela.
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: Bazooka en Diciembre 29, 2011, 07:27:16 am
Gracias Andonaira!!! fue muy importante la ayuda aportada. De todas maneras me apretaba el tiempo y lo termine solucionando fr una manera no muy elegante pero funciona:

Código: [Seleccionar]
Private Sub BuscarPorFecha1()
 Dim date1 As String
 Dim date2 As String
 Dim sql As String
 
 date1 = d1.Month & "/" & d1.Day & "/" & d1.Year
 date2 = d2.Month & "/" & d2.Day & "/" & d2.Year
       
       
sql = "SELECT Ordenanzas.ID, Ordenanzas.FechaInicio, Ordenanzas.Asunto, " & _
"Ordenanzas.ref, Ordenanzas.ubicacion, Ordenanzas.estado From Ordenanzas " & _
"WHERE (((Ordenanzas.FechaInicio) Between #" & CDate(date1) & "# And #" & CDate(date2) & "#));"
 Call CargarORDENANZAS(sql)

End Sub
 

Note que en Access (no se porque manga) me estaba cambiando la fecha de la consulta (ver imagen abajo) y le cambie la variable Date por String y desmenuce la fecha y la cambio al formato mm/dd/aaaa

Aca ver como Access analizando el código en SQL invierte el formato de mmes dia a dia mes

(http://www.misimagenesgratis.com.ar/images/consulta_error.jpg)
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: ssccaann43 en Diciembre 29, 2011, 11:44:07 am
Eso se debe quizas a la configuracion regional del PC que usas...! Tengo practicamente un problema similar en la empresa donde trabajo con un soft que alguien desarrollo acá y me ha tocado cambiar casi todo, porque ha sido un desastre...!
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: YAcosta en Diciembre 29, 2011, 12:47:27 pm
Por eso mismo se olvidan de todos esos inconvenientes si siempre formatean como YYYY/MM/DD que es el formato que no deja ninguna ambigüedad y siempre funcionara este como este la configuracion regional.

Saludos

Agrego: Este formateo va muy bien para cualquier motor que se use.
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: Bazooka en Diciembre 29, 2011, 01:27:33 pm
Eso se debe quizas a la configuracion regional del PC que usas...! Tengo practicamente un problema similar en la empresa donde trabajo con un soft que alguien desarrollo acá y me ha tocado cambiar casi todo, porque ha sido un desastre...!

No amigo no es eso ya que es lo primero que mire cuando me di cuenta y esta correcta!! o sea en dd/mm/aaaa ! asi que sescarto que sea eso al menos en mi pc

Gracias
Título: Re:Problemas con devolución de registros en búsqueda por consulta
Publicado por: wolf_kof en Enero 27, 2012, 06:53:23 pm
Código: (VB) [Seleccionar]
Rs.filter = "fecha1 >= '" & datevalue(dtpicker1) & "' and fecha1 <= '" & datevalue(dtpicker2) & "'"

Yo a si lo hago y me trabaja. inclusive en Access y MySQL.  ;D