CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Buscar por fecha a traves de sentencia sql en bd access

(1/1)

donnett:
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:
Prueba de esta manera, la que access delimita las fechas con el caracter #


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


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


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 ---'2009-04-15'  != ' 2009-04-15 ' 
Saludos

carlosespinoza:
hola...

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


--- Código: SQL --- ...WHERE fecha=CONVERT(datetime,'" & fe & "',103)...  
con esto, tu fecha la conviertes en formato de fecha...

Espero te sirva, saludos

donnett:
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

Navegación

[0] Índice de Mensajes

Ir a la versión completa