从我更新的旧 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
****编辑:我正在使用该查询填充应用程序中的特定下拉列表,并且它正在 和 上工作。
这里的一些示例使用 If 循环而不是 Do While Not,但它们都完成了相同的事情,我认为这不是问题。我也不认为这是问题,因为我从应用程序上的另一个菜单选项复制并粘贴了该部分,并且当我单击它时该选项起作用。仅当我选择添加的选项时,它才会引发错误。
谢谢,我感谢任何人可以提供的帮助。
修改如下代码:
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
当记录集中没有记录时会出现此错误。请检查您的查询是否正确并给出记录。