Autor Tema: Problemas con devolución de registros en búsqueda por consulta  (Leído 6070 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Problemas con devolución de registros en búsqueda por consulta
« 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!!



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


Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #1 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.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #2 en: Diciembre 28, 2011, 08:35:32 pm »
Es del tipo DATE el campo que devuelve!!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #3 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
Me encuentras en YAcosta.com

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #4 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

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.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #5 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


Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #6 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...!
Miguel Núñez.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #7 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.
« última modificación: Diciembre 29, 2011, 06:12:28 pm por YAcosta »
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #8 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
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

wolf_kof

  • Visitante
Re:Problemas con devolución de registros en búsqueda por consulta
« Respuesta #9 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