执行datagridview adapter时数据类型不匹配异常填写vb.net

时间:2017-03-23 07:34:41

标签: vb.net date datagridview ms-access-2010

我正在尝试从我在OleDBDataAdapter中找到的SQL查询字符串执行查询,以便我可以使用查询字符串的结果填充datagridview。字符串是:

Dim sqlsearch as string = "select DateField1, DateField2 from TableOne where DateField1 >= '" & CType(StDate, Date) & "' and DateField1 <= '" & CType(EnDate, Date) & "'"

我想显示开始日期和结束日期之间的日期结果。 &#34; StDate&#34;是开始日期和&#34; EnDate&#34;是结束日期,他们从两个文本框中获取它们的值(两个文本框是只读的,从DateTimePicker控件获取使用短日期格式的日期字符串)。

数据库字段&#34; DateField1&#34;和&#34; DateField2&#34;也使用相同的日期格式(短)。我用来尝试填充datagridview的代码如下:

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

我在标准表达式中得到了#34;数据类型不匹配&#34; dt必须填充适配器时的异常消息。

请帮助我[roblem或帮助我更好地查询vb.net和MS Access中的日期范围。

2 个答案:

答案 0 :(得分:0)

尝试使用octothorphes和强制格式:

sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= #" & CType(StDate, Date).ToString("yyyy'/'MM'/'dd") & "# and DateField1 <= #" & CType(EnDate, Date).ToString("yyyy'/'MM'/'dd") & "#"

答案 1 :(得分:0)

  sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= '" & StDate.value & "' and DateField1 <= '" & EnDate.value  & "'"