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
Ir a la versión completa