Нет строки в позиции 0 ошибка TableAdapter

Я получаю эту ошибку каждый раз, когда пытаюсь получить значение первого столбца каждой строки.

Dim modAdapter As New StudentSystemDBDataSetTableAdapters.modulesTableAdapter
Dim modDataset As New StudentSystemDBDataSet

If modAdapter.ModulesCountRow() <> 0 Then
    For x As Integer = 0 To modAdapter.ModulesCountRow()
        Dim column As String = modDataset.modules.Rows(x)(0).ToString
        MsgBox(column)
    Next
End If`

2 ответа

Решение

Индексы начинаются с нуля. Итак, первый ряд на modDataset.modules.Rows(0) и последний в modDataset.modules.Rows(modAdapter.ModulesCountRow() - 1),

Итак, вы должны вычесть 1:

For x As Integer = 0 To modAdapter.ModulesCountRow() - 1
    Dim column As String = modDataset.modules.Rows(x)(0).ToString
    MsgBox(column)
Next

Изменить: вы также можете использовать DataTable.Rows.Count свойство, если оно уже заполнено. Тогда вам не нужно получать количество строк из базы данных с помощью адаптера данных:

For x As Integer = 0 To modDataset.modules.Rows.Count - 1
    Dim column As String = modDataset.modules.Rows(x)(0).ToString
    MsgBox(column)
Next

Убедитесь, что в вашем наборе данных (модулях) есть строки:

If modDataset.modules.Rows.Count > 0 AndAlso modAdapter.ModulesCountRow() <> 0 Then
            For x As Integer = 0 To modAdapter.ModulesCountRow()
                Dim column As String = modDataset.modules.Rows(x)(0).ToString
                MsgBox(column)
            Next
        End If
Другие вопросы по тегам