Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 错误:索引超出范围,无法读取表的最后一行?_Vb.net_Ms Access_Datagridview_Vb.net 2010 - Fatal编程技术网

Vb.net 错误:索引超出范围,无法读取表的最后一行?

Vb.net 错误:索引超出范围,无法读取表的最后一行?,vb.net,ms-access,datagridview,vb.net-2010,Vb.net,Ms Access,Datagridview,Vb.net 2010,我正在使用VisualStudio2010。 我想从access数据库中获取数据并在datagridview中显示,但所有数据都无法获取,具体来说,我有三行数据,但只有两行正在读取。。。 最后一行无法读取 Sub FillAttendance() Dim dt As New DataTable Dim sqlCmd As OleDbCommand Dim adapter As New OleDbDataAdapter con1.Co

我正在使用VisualStudio2010。 我想从access数据库中获取数据并在datagridview中显示,但所有数据都无法获取,具体来说,我有三行数据,但只有两行正在读取。。。 最后一行无法读取

Sub FillAttendance()
        Dim dt As New DataTable
        Dim sqlCmd As OleDbCommand
        Dim adapter As New OleDbDataAdapter
        con1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\bunifu.mdb;Jet OLEDB:Database Password='kt2019';"

    Try
        Dim status As String = "Active"
        Dim ssql As String = String.Empty
        ssql = "SELECT memberid, membername FROM members WHERE company='" & My.Settings.company & "' AND status='" & status & "'"
        If con1.State = ConnectionState.Closed Then con1.Open()
        sqlCmd = New OleDbCommand(ssql, con1)
        adapter.SelectCommand = sqlCmd
        adapter.Fill(dt)

        adapter.Dispose()
        sqlCmd.Dispose()
        con1.Close()
        Form1.attendancenew.Rows.Clear()
        Form1.attendancenew.Rows.Add()
        For i As Integer = 0 To dt.Rows.Count - 1  '{Im getting error on this line}
            With Form1.attendancenew.Rows(i)
                .Cells(0).Value = dt.Rows(i)("memberid").ToString()
                .Cells(1).Value = dt.Rows(i)("membername").ToString()
            End With
        Next


    Catch ex As Exception
        MsgBox(ex.Message)

    End Try
End Sub
结果错误显示:索引超出范围


我尝试了很多可能性,但都失败了。

您应该将datagridview绑定到datatable,而不是遍历datatable中的行。感谢您的回复,我只想要表中的一些行和列,我不想显示完整的数据。根据您使用的代码,不是MySQL,而是ms access。已更正产品标签。您所说的获取错误的语句不包含索引。错误似乎更可能出现在下面三行中的一行。例如:
Form1.attendancenew
可能不包含与
dt
相同的行数。@AmarSingh如果您只需要一些行,请修改您的
SELECT
查询,使其仅包含您希望在结果集中看到的行。