【问题标题】:Data type mismatch exception when executing datagridview adapter fill in vb.netvb.net中执行datagridview适配器填充时出现数据类型不匹配异常
【发布时间】:2017-08-15 15:21:09
【问题描述】:

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

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

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

数据库字段“DateField1”和“DateField2”也使用相同的日期格式(短)。我用来尝试填充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

当 dt 必须填充适配器时,我收到“条件表达式中的数据类型不匹配”异常消息。

请帮助我解决这个问题,或者帮助我更好地使用 vb.net 和 MS Access 中的日期范围进行查询。

【问题讨论】:

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


    【解决方案1】:

    尝试使用八字形和强制格式:

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

    【讨论】:

    • 完美运行。谢谢你的解决方案。 @古斯塔夫
    【解决方案2】:
      sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= '" & StDate.value & "' and DateField1 <= '" & EnDate.value  & "'"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-26
      • 2016-12-18
      • 1970-01-01
      • 2011-02-11
      • 2014-05-23
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      相关资源
      最近更新 更多