运行时错误'3021':BOF或EOF为True,或者当前记录已被删除。请求的操作需要当前记录

问题描述 投票:0回答:2

从我更新的旧 VB6 应用程序中获取此错误。所以我启动并运行了 XP 模式,并在其上安装并更新了 VB6,并且添加了我要求的菜单选项,但现在我收到此错误。

这里有几个有关此错误或类似错误的示例,我浏览了其中的一些示例,但情况并不完全相同,而且我仍然是一个相当新手的开发人员,我只需要帮助。我测试了我在开发服务器上编写的查询及其周围的 VB 语法,该部分工作正常。我认为这与接近尾声的结果集逻辑有关:

Private Sub FillDoor()

    Dim m_rsDoor As ADODB.Recordset

    cboDoorStyle.Clear

    Set m_rsDoor = conSQL.Execute("SELECT bpm.[Description] " & _
                                    "FROM tblBrandProductMaster bpm " & _
                                    "INNER JOIN tblDoorStyles ds " & _
                                        "ON ds.DoorStyleCode = bpm.Code " & _
                                    "INNER JOIN tblFamilyDoorStyles fds " & _
                                        "ON bpm.Code = fds.DoorStyleCode " & _
                                    "INNER JOIN tblFamilyLines fl " & _
                                        "ON fds.FamilyLineCode = fl.FamilyLineCode " & _
                                    "WHERE fl.FamilyLineCode = '" & strFamID & "' " & _
                                        "AND ds.DFFactive = 1 " & _
                                    "ORDER BY bpm.[Description] ASC")
    Do While Not m_rsDoor.EOF
        cboDoorStyle.AddItem m_rsDoor!Description
        m_rsDoor.MoveNext
    Loop
    Set m_rsDoor = Nothing

End Sub

****编辑:我正在使用该查询填充应用程序中的特定下拉列表,并且它正在 SQL serverin the app 上工作。

这里的一些示例使用 If 循环而不是 Do While Not,但它们都完成了相同的事情,我认为这不是问题。我也不认为这是问题,因为我从应用程序上的另一个菜单选项复制并粘贴了该部分,并且当我单击它时该选项起作用。仅当我选择添加的选项时,它才会引发错误。

谢谢,我感谢任何人可以提供的帮助。

vb6
2个回答
0
投票

修改如下代码:

Private Sub FillDoor()

    Dim m_rsDoor As ADODB.Recordset
    Set m_rsDoor = New Recordset

    Dim ActiveConnection as String
    ActiveConnection = "XXXXXXXXXXX"

    Dim strSQL as String
    strSQL = "SELECT bpm.[Description] " & _
                                "FROM tblBrandProductMaster bpm " & _
                                "INNER JOIN tblDoorStyles ds " & _
                                    "ON ds.DoorStyleCode = bpm.Code " & _
                                "INNER JOIN tblFamilyDoorStyles fds " & _
                                    "ON bpm.Code = fds.DoorStyleCode " & _
                                "INNER JOIN tblFamilyLines fl " & _
                                    "ON fds.FamilyLineCode = fl.FamilyLineCode " & _
                                "WHERE fl.FamilyLineCode = '" & strFamID & "' " & _
                                    "AND ds.DFFactive = 1" & _
                                "ORDER BY bpm.[Description] ASC"

    m_rsDoor.open strSQL, ActiveConnection, adOpenStatic, adLockOptimistic

    Do While Not m_rsDoor.EOF
        cboDoorStyle.AddItem m_rsDoor!Description
        m_rsDoor.MoveNext
    Loop
    Set m_rsDoor = Nothing

End Sub

0
投票

当记录集中没有记录时会出现此错误。请检查您的查询是否正确并给出记录。

© www.soinside.com 2019 - 2024. All rights reserved.