【发布时间】:2016-07-13 21:43:50
【问题描述】:
到目前为止,这是我的代码... 我有 2 个 DateTimePickers,其中用户选择一周的第一天和一周的最后一天,一旦选择了这两个,我想计算每天的工作时间并将它们相加,这样我就可以显示工作时间选定的天数间隔。
My Work 表包含一个 idEmployee、Date、ArrivalTime、DepartureTime 和一个显示当天工作小时数的计算列 (Hrs_worked)。
当我运行程序时,会弹出一个消息框并显示“从类型 'DBNull' 到类型'String' 的转换无效”或“条件表达式中的数据不匹配” 我是否需要将 datetimepickers 值更改为字符串值?
我正在使用 Access 数据库开发 Visual Basic Express 2010
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim provider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
Dim dataFile As String = "E:\SIDB.accdb"
Dim connString As String = provider & dataFile
Dim myConnection As OleDbConnection
Dim cmd As OleDbCommand
Dim qHrsWorked As String = "SELECT SUM(Hrs_worked) FROM Work WHERE IdEmployee = " & idEmptxt.Text & " AND Date >= " & firstDayDTP.Value & " AND Date <= " & lastDayDTP.Value & ""
myConnection = New OleDbConnection(connString)
Try
myConnection.Open()
cmd = New OleDbCommand(qHrsWorked, myConnection)
Dim reader As OleDbDataReader = cmd.ExecuteReader()
While reader.Read
hrsWorkedtxt.Text = reader.Item(0)
End While
reader.Close()
cmd.Dispose()
myConnection.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
【问题讨论】:
-
你在哪一行得到了异常?
-
数据不匹配是因为你没有使用SQL参数。时期。 DbNull 转换错误可能是当没有记录匹配传递的查询时,可能由于没有使用 SQL 参数而导致格式错误。此外,您的应用程序正在泄漏资源。并使用 SQL 参数。