Vb.net 访问OleDbDataReader项时发生IndexAutoFrange错误

Vb.net 访问OleDbDataReader项时发生IndexAutoFrange错误,vb.net,visual-studio-2010,visual-studio,ms-access,Vb.net,Visual Studio 2010,Visual Studio,Ms Access,我有一些sql在access 2010中运行良好,并返回正确的值。但是,在VB.NET中,当我运行它时,会在while循环中导致上述错误。HasRows博士正在返回“TRUE”,但变量“itm”在自动窗口中不显示任何内容。有人能解释一下为什么会发生这种情况,以及我如何纠正它吗。谢谢 Dim cmd As OleDbCommand = New OleDbCommand("SELECT Max(Requests.[Request no]) AS [MaxOfRequest no], Requests

我有一些sql在access 2010中运行良好,并返回正确的值。但是,在VB.NET中,当我运行它时,会在while循环中导致上述错误。HasRows博士正在返回“TRUE”,但变量“itm”在自动窗口中不显示任何内容。有人能解释一下为什么会发生这种情况,以及我如何纠正它吗。谢谢

Dim cmd As OleDbCommand = New OleDbCommand("SELECT Max(Requests.[Request no]) AS [MaxOfRequest no], Requests.Customer, " &
                    "Max([Request Boxes].[Request no]) AS [MaxOfRequest no1], [Request Boxes].Customer " &
                    "FROM Requests, [Request Boxes] " &
                    "GROUP BY Requests.Customer, [Request Boxes].Customer " &
                    "HAVING (((Requests.Customer)='" & cmbCustomer.Text & "') AND (([Request Boxes].Customer)='" & cmbCustomer.Text & "')) " &
                    "ORDER BY Requests.Customer, [Request Boxes].Customer", oledbCnn)

            dr = cmd.ExecuteReader()

            If dr.HasRows Then <--- this returns true

                While dr.Read

                    itm = CStr(dr.Item("[MaxOfRequest no]")) <--- ERROR HERE
                    itm2 = CStr(dr.Item("[MaxOfRequest no1]"))

                End While

            End If
Dim cmd As OleDbCommand=New OleDbCommand(“选择Max(Requests.[Request no])作为[MaxOfRequest no],Requests.Customer,”&
最大([Request Box].[Request no])为[MaxOfRequest no 1],[Request Box]。客户&
“从请求,[请求框]”&
“按请求分组。客户,[请求框]。客户”&
“具有(((Requests.Customer)='”&cmbCustomer.Text&“)和(([请求框].Customer)='”&cmbCustomer.Text&“)”&
“按请求订购。客户,[请求框].Customer”,oledbCnn)
dr=cmd.ExecuteReader()

如果dr.HasRows,则此处不需要方括号:

itm = CStr(dr.Item("[MaxOfRequest no]")) 
方括号只是SQL语句中的分隔符;它们不是列名本身的一部分。请尝试以下方法:

itm = CStr(dr.Item("MaxOfRequest no"))

dr.HasRows
为true意味着存在行。这并不意味着存在一个特定的字段(如
[MaxOfRequest no]
),这是错误试图说的。非常感谢Gord