2016-04-14 31 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") & "'")