【发布时间】:2014-08-08 21:48:33
【问题描述】:
假设有图表要出现。但是,它不是因为有关于 dbnull 问题的问题。当三个 select 语句中的任何一个没有数据时,就会发生这种情况。
Dim user As String = Session("NoMatrik")
Dim resultId As Object = Session("max")
Dim idQuery = "select max(resultid) as id from tblResult where result_nomatric = @matric and result_quiz_id = 1 UNION All " +
"select max(resultid) as id from tblResult where result_nomatric = @matric and result_quiz_id = 2 UNION All " +
"select max(resultid) as id from tblResult where result_nomatric = @matric and result_quiz_id = 3"
conn.Open()
Dim cmdGetId As New SqlCommand(idQuery, conn)
cmdGetId.Parameters.AddWithValue("@matric", user)
Dim maxIDs As SqlDataReader = cmdGetId.ExecuteReader
Dim IDs As String = ""
While maxIDs.Read
IDs += maxIDs("id").ToString() + ", "
End While
maxIDs.Close()
IDs = IDs.Substring(0, IDs.Length - 2)
Dim cmdString = "Select tblResult.result_quiz_id as Quiz,count(TblAnswer.AnswerType) as answerCount , TblAnswer.AnswerType " +
"from TblResultDetail inner join TblAnswer on TblResultDetail.ResultDetail_Answer_Id = TblAnswer.AnswerId " +
"inner join tblResult on tblResult.resultid = TblResultDetail.ResultDetail_Result_Id " +
"where TblResultDetail.ResultDetail_Result_Id in (" + IDs + ") " +
"group by TblAnswer.AnswerType, tblResult.result_quiz_id order by TblAnswer.AnswerType"
Dim cmd As New SqlCommand(cmdString, conn)
If IsDBNull(resultId) Then
Label1.Visible = True
chrtResult.Visible = False
Else
Dim dr1 As SqlDataReader
dr1 = cmd.ExecuteReader
While dr1.Read()
Dim tempArr(0) As Double
Dim count As Double = dr1("answerCount")
tempArr(0) = count
Dim Type As String = dr1("AnswerType").ToString()
Dim level As Integer = dr1("Quiz")
chrtResult.Series(Type).Points(level - 1).YValues = tempArr
End While
End If
conn.Close()
End If
End Sub
一个错误,'(' 附近出现错误的语法出现在dr1 = cmd.ExecuteReader 行。那么,我想如何解决这个错误?
【问题讨论】:
-
你的id是字符串还是数值?
-
varchar。我有根本没有数据的情况,然后将显示消息(标签1)。但是,如果数据不完整,'(' 附近的错误语法会出现在 dr1 = cmd.ExecuteReader.
标签: asp.net sql-server vb.net gridview