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

Sql/ VB.net - Invalid Operation Exception

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

这就是我到目前为止所做的。

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

这个"An exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll but was not handled in user code. Additional information: Data type mismatch in criteria expression."出现在我运行的时候。 有人告诉我 运行 数据验证,但我不确定我应该使用什么验证。

谢谢。

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

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

要解决这个问题,请使用调试器或简单的打印语句查看 sql 的内容。

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