【发布时间】:2013-12-31 19:57:40
【问题描述】:
我有执行查询并返回结果的以下代码。但是,我环顾四周,发现了一些处理空值的示例,但出现错误:“不存在数据时读取的尝试无效。”我也收到错误消息:“从类型 'DBNull' 转换为类型 'Decimal' 无效。”
有人可以帮我解决此代码以防止空值使我的程序崩溃吗?
Private Sub EFFICIENCY_STACKRANK_YTD(ByVal EMPLOYEE As String)
Dim queryString As String = "SELECT " & _
" (SELECT CAST(SUM(TARGET_SECONDS) AS DECIMAL)/ CAST(SUM(ROUTE_SECONDS) AS DECIMAL) FROM dbo.APE_BUSDRIVER_MAIN WITH(NOLOCK) WHERE APE_AREA_OBJID = " & lblAreaOBJID.Text & " AND EMPLOYEE_NAME = '" & EMPLOYEE & "' AND YEAR_TIME = '" & cbYear.Text & "' AND ACTIVE = 1) AS RESULT1" & _
" FROM dbo.APE_BUSDRIVER_MAIN "
Using connection As New SqlConnection(SQLConnectionStr)
Dim command As New SqlCommand(queryString, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
If reader.Read Then
RESULT1 = reader("RESULT1")
Else
RESULT1 = 0
End If
End Using
End Sub
【问题讨论】:
-
阅读我对您其他问题的回答。那里的代码已经有效地处理了这个问题。
标签: asp.net vb.net sqldatareader dbnull