Sql / VB.net - 无效的操作异常

时间:2016-10-25 07:37:07

标签: sql vb.net exception oledb type-mismatch

这是一个数据库驱动的货币转换器,程序必须从数据库中获取汇率并显示它们。我使用Microsoft Access创建了数据库,所有数据类型都设置为" Currency"除了日期字段,它是"日期/时间"。

这是我迄今为止所做的。

sql = "SELECT TOP 1 USD,EUR,GBP FROM dbexchangeRates WHERE Date='" & DateTimePicker1.Text.ToString & "'"

    Using connection As New OleDb.OleDbConnection(strConnectionString),
      command As New OleDb.OleDbCommand(sql, connection),
      adapter As New OleDb.OleDbDataAdapter(command)

        connection.Open()

        adapter.Fill(ds, "rates")

        connection.Close()

    End Using

这是" System.Data.OleDb.OleDbException类型的例外'发生在System.Data.dll中但未在用户代码中处理。附加信息:标准表达式中的数据类型不匹配。"当我跑步时出现。 我被告知要进行数据验证,但我不确定我想要使用哪些验证。

谢谢。

1 个答案:

答案 0 :(得分:0)

问题可能是DateTimePicker1.Text.ToString没有返回有效日期,这使得查询失败。可能的原因:

  • 这不是日期(我假设选择器强制执行日期值,但仍然可能存在空值或其他内容。)在这种情况下,您需要更改{{ 1}}处理这种情况而不是调用该查询。
  • Excel中的日期格式与Access所期望的格式不匹配。在这种情况下,您可以在Excel或Access中更改日期的格式(您可以在此处找到大量有关此内容的帮助)其他问题等。)。

要做到这一点,请使用调试器或简单的print语句来查看DateTimePicker1_ValueChanged的内容。

当你看到它时,问题可能很明显;如果没有,您也可以尝试在Access中手动运行该sql语句,看看会发生什么。