• Viernes 8 de Noviembre de 2024, 10:55

Autor Tema:  Buscar por fecha a traves de sentencia sql en bd access  (Leído 4536 veces)

donnett

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Buscar por fecha a traves de sentencia sql en bd access
« en: Miércoles 15 de Abril de 2009, 09:49 »
0
Buenas, mi problema consiste en que estoy trabajando con una bd de access y con el vb.net 2008. Quiero visualizar un grafico con el nuevo control de vb.net y para ello ago una sentencia select en la que busco por fecha y por el tipo de dato. Para ello tengo un combobox q me carga directamente de la bd los tipos de datos del cual selecciono uno y para buscar por fechas tengo dos maskedbox (igual q un textbox pero pongo la mascara de fecha) en los que meto la fecha inicial y la fecha final. las fechas de las q kiero mostrar datos en mi grafico.
El problema reside en que al hacer la sentencia select, no me reconoce la fecha y me da error. os pongo el trozo de codigo y os digo el error exacto:

        Dim operarDb As Clasebd               'para abrir la conexion a mi bd
        operarDb = New Clasebd
        operarDb.conexion_abrir()
        Dim seleccion As String
        Dim dat As String                          'dato
        Dim fe As DateTime                      'fecha inicio
        Dim fef As DateTime                     'fecha fin
        dat = Me.ComboBox1.Text
        fe = CDate(MaskedTextBox1.Text)
        fef = CDate(MaskedTextBox2.Text)
        seleccion = "Select * from Historicos where Sensor ='" & dat & "' and Fecha between ' " & fe & " ' and ' " & fef & " ' "
        Dim lector As System.Data.OleDb.OleDbDataReader
        lector = operarDb.comando_leer(seleccion)

el error es el siguiente:
No coinciden los tipos de datos en la expresión de criterios.

Si quito la comilla simple de los tipos fecha no me da fallo pero no me muestra nada y deberia mostrar por lo menos 15 datos. Para insertar en la bd la fecha con sentencia sql necesito la comilla simple. No es el primer problema q tengo al buscar por fechas en la bd. En otras ocasiones e metido mas campos en mi bd y e dao vueltas para no buscar por fechas pero en este caso no tengo mas remedio que hacerlo por este campo.

Gracias de antemano y espero vuestra ayuda.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Buscar por fecha a traves de sentencia sql en bd access
« Respuesta #1 en: Miércoles 15 de Abril de 2009, 16:57 »
0
Prueba de esta manera, la que access delimita las fechas con el caracter #

Código: vb.net
  1. seleccion = "Select * from Historicos where Sensor ='" & dat & "' and Fecha between #" & fe & "# and #" & fef & "# "
  2.  

o

Código: vb.net
  1. seleccion = "Select * from Historicos where Sensor ='" & dat & "' and Fecha >= #" & fe & "# and Fecha <= #" & fef & "# "
  2.  



No des espacios cuando entrecomillas una cadena Fecha between '{espacio}" & fe & "{espacio}' and {espacio}" & fef & "{espacio}'"

Eso es un error ya que serian cadenas diferentes,

Código: Text
  1. '2009-04-15'  != ' 2009-04-15 '
  2.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

carlosespinoza

  • Miembro activo
  • **
  • Mensajes: 53
  • Nacionalidad: mx
    • Ver Perfil
    • http://carlostusa.spaces.live.com/
Re: Buscar por fecha a traves de sentencia sql en bd access
« Respuesta #2 en: Miércoles 15 de Abril de 2009, 17:00 »
0
hola...

utiliza la funcion convert, posiblemente tu dato te lo este tomando como string, por lo que no puede compararlo

Código: SQL
  1.  
  2. ...
  3. WHERE fecha=CONVERT(datetime,'" & fe & "',103)
  4. ...
  5.  
  6.  

con esto, tu fecha la conviertes en formato de fecha...

Espero te sirva, saludos

donnett

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Buscar por fecha a traves de sentencia sql en bd access
« Respuesta #3 en: Jueves 16 de Abril de 2009, 08:47 »
0
Muchisimas gracias a ambos. lo he solucionado con lo de las almoadillas. convertirlo de string a fecha ya lo acia con

fe = CDate(MaskedTextBox1.Text)

 Me ha sido de gran ayuda

Saludos