我正在尝试从我用OleDBDataAdapter找到的SQL查询字符串执行查询,以便我可以用查询字符串的结果填充数据网格视图。字符串为:
Dim sqlsearch as string = "select DateField1, DateField2 from TableOne where DateField1 >= '" & CType(StDate, Date) & "' and DateField1 <= '" & CType(EnDate, Date) & "'"
我想显示开始日期和结束日期之间的日期结果。"StDate"是开始日期,"EnDate"是结束日期,它们从两个文本框中获取其值(两个文本框是只读的,并从使用短日期格式的 DateTimePicker 控件获取日期字符串(。
数据库字段"DateField1"和"DateField2"也使用相同的日期格式(短(。我用来尝试填充数据网格视图的代码如下:
Try
Dim StDate As String = TextBox1.Text
Dim EnDate As String = TextBox2.Text
Dim sqlsearch As String
Dim adapter As New OleDbDataAdapter
Dim dt As New DataTable("TableOne")
Try
DBConnas.ConnectionString = ConnStr
DBConnas.Open()
sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= '" & CType(StDate, Date) & "' and DateField1 <= '" & CType(EnDate, Date) & "'"
' Once again we execute the SQL statements against our DataBase
adapter = New OleDbDataAdapter(sqlsearch, DBConnas)
' Shows the records and updates the DataGridView
dt = New DataTable("TableOne")
adapter.Fill(dt)
DataGridView1.DataSource = dt
DBConnas.Close()
Catch ex As Exception
MsgBox(ex.Message)
DBConnas.Close()
End Try
Catch ex As Exception
MsgBox(ex.Message)
End Try
当 dt 必须填充适配器时,我收到"条件表达式中的数据类型不匹配"异常消息。
请帮助我解决这个问题[roblem或帮助我以更好的方式查询 vb.net 和MS Access中的日期范围。
尝试使用八角形和强制格式:
sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= #" & CType(StDate, Date).ToString("yyyy'/'MM'/'dd") & "# and DateField1 <= #" & CType(EnDate, Date).ToString("yyyy'/'MM'/'dd") & "#"
sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= '" & StDate.value & "' and DateField1 <= '" & EnDate.value & "'"