2014-05-17 55 views
0

我正在创建多选题系统。 到目前为止,我创建了这4个表格和1个视图。将数组传递到表

该表是tblQuestion,tblAnswer,tblQuiz,tblResult和tblResultDetail。 tblQuestion是存储问题,tblAnswer存储问题的答案,tblResult是为每个回答测验的用户记录,并将用户答案存储在TblResultDetails中。

根据下面的代码,从视图中读取数据。 (questiondr.Read)。我使用1,2,3,4,因为它是视图的列名称。我做了这个随机化的答案。

Dim MyArray(3) As String 
    Dim commd As New SqlCommand("Select * From view_Question Where [email protected]", conn) 
    commd.Parameters.AddWithValue("@IdQuestion", count) 
    Dim questiondr As SqlDataReader 
    questiondr = commd.ExecuteReader 


If questiondr.Read() Then 
    Me.lblTitle.Text = questiondr("txtQuestion") 

    Me.ansrb1.Text = questiondr("1") 
    MyArray(0) = questiondr("1") 

    Me.ansrb2.Text = questiondr("2") 
    MyArray(1) = questiondr("2") 

    Me.ansrb3.Text = questiondr("3") 
    MyArray(2) = questiondr("3") 

    Me.ansrb4.Text = questiondr("4") 
    MyArray(3) = questiondr("4") 


    Dim userAns As String 

    If Me.ansrb1.Checked = True Then 
     userAns = MyArray(0) 
    ElseIf Me.ansrb2.Checked = True Then 
     answerId = MyArray(1) 
    ElseIf Me.ansrb3.Checked = True Then 
     userAns = MyArray(2) 
    ElseIf Me.ansrb4.Checked = True Then 
     userAns = MyArray(3) 
    End If 

End If 
conn.Close() 

末次

而问题是,如何通过用户的答案为表tblResultDetails?

+0

off-by-one,数组需要4个元素。 – Steve

+0

你是什么意思?你能解释更多吗? – luly

+0

'Dim MyArray(3)As String'这是一个只能包含3个字符串(从0到2的索引)的数组。您需要'Dim MyArray(4)As String'来存储4个字符串(索引从0到3)。只有3个元素,当您的代码尝试使用索引3时,您将在运行时收到索引超出范围异常。这种情况叫做'off-by-one'[见维基百科](http://en.wikipedia.org/wiki/Off-by-one_error) – Steve

回答

0

假设tblResultDetails包含了userid一个字段中,questionid一个字段,通过特定的用户给出了该特定问题的答案字段,那么你需要像这样

Dim cmdText = "INSERT INTO tblResultDetails VALUES (@userid, @questionid, @answerid)" 
Dim cmd = new SqlCommand(cmdText, connection) 
cmd.Parameters.AddWithValue("@userid", yourCurrentUserIDValue) 
cmd.Parameters.AddWithValue("@questionid", yourCurrentQuestionIDValue) 
cmd.Parameters.AddWithValue("@answerid", userAns) 
cmd.ExecuteNonQuery() 

,你可以如果你在某处存储了两个缺少的信息(userid和questionid),看看它是非常简单的。

+0

我试过这段代码,出现错误,输入字符串的格式不正确 – luly