CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: donnett en Miércoles 15 de Abril de 2009, 09:49
Título: Buscar por fecha a traves de sentencia sql en bd access
Publicado por: donnett en Miércoles 15 de Abril de 2009, 09:49
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.
Título: Re: Buscar por fecha a traves de sentencia sql en bd access
Publicado por: F_Tanori en Miércoles 15 de Abril de 2009, 16:57
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
Título: Re: Buscar por fecha a traves de sentencia sql en bd access
Publicado por: carlosespinoza en Miércoles 15 de Abril de 2009, 17:00
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
Título: Re: Buscar por fecha a traves de sentencia sql en bd access
Publicado por: donnett en Jueves 16 de Abril de 2009, 08:47
Muchisimas gracias a ambos. lo he solucionado con lo de las almoadillas. convertirlo de string a fecha ya lo acia con