2016-04-14 30 views
0

我试图根据ID更新我的数据表中的一行。我要插入的数据来自sql。我试图防止表中的重复项,如果发生重复,我想增加时间列。 这是我的代码。每当我执行它我得到这个错误:附加信息:索引超出了数组的界限。在我看来,选择无法找到数据表中正确的行。有什么建议么?更新数据表中的行

Dim listID As New List(Of Integer) 
Dim dt As New DataTable 
dt.Columns.Add("LOID") 
dt.Columns.Add(New DataColumn("Correct", GetType(Integer))) 
dt.Columns.Add(New DataColumn("Times", GetType(Integer))) 

For Each dr As DataRow In ds.Tables(0).Rows 
    If Not listID.Contains(dr.Item("LOID")) Then 
     'check if its correct 
     Dim answerCorrect As Integer 
     If dr.Item("Correct") = 1 Then 
      answerCorrect = 1 
     Else 
      answerCorrect = 0 
     End If 
     'add new row 
     listID.Add(dr.Item("LOID")) 
     dt.Rows.Add(dr.Item("LOID"), answerCorrect, 1) 
    Else 
     'update table set times plus 1 
     Dim myRow() As Data.DataRow 
     Dim rowName As String = "LOID = " & dr.Item("LOID") 
     myRow = dt.Select(rowName) 

     Dim timesLO As Integer = myRow(0)("Times") 
     myRow(0)("Times") = timesLO 
     'update table depending if the answer is correct 
     If dr.Item("Correct") = 1 Then 
      myRow(0)("Correct") = myRow(0)("Correct") + 1 
     End If 

    End If 
Next 
+0

好吧,我的数据表进行搜索,所以我想通了,问题是select语句的实际语法。如果我用myRow = dt.Select(“LOID ='9'”)替换它,它似乎正在工作。现在的问题是如何用dr.item(“LOID”)变量替换9 .... – user3194603

回答

0

想通了! :)

我用下面的代码使用动态值

myRow = dt.Select("LOID ='" & dr.Item("LOID") & "'")