2016-04-14 5 views
0

Я пытаюсь обновить строку в моем datatable в зависимости от ее идентификатора. Данные, которые я вставляю, - это sql. Я пытаюсь предотвратить дубликаты в таблице, а также, если возникает дубликат, я хочу увеличить число раз. Это мой код. Всякий раз, когда я его выполняю, я получаю эту ошибку: Дополнительная информация: Индекс находился за пределами массива. Мне кажется, что выберите не можете найти правильную строку в datatable. Какие-либо предложения?Обновить строку в datatable

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

Ok, так что я понял, что проблема является фактическим синтаксис оператора выбора. если я заменил его myRow = dt.Select («LOID = '9»), похоже, он работает. Теперь вопрос в том, как заменить 9 на переменную dr.item («LOID») .... – user3194603

ответ

0

Фигурные это! :)

Я использовал следующий код для поиска в мой DataTable, используя динамическое значение

myRow = dt.Select("LOID ='" & dr.Item("LOID") & "'") 
Смежные вопросы