【发布时间】:2022-02-22 19:04:55
【问题描述】:
从我收到更新的旧 VB6 应用程序中获取此错误。因此,我启动并运行了 XP Mode,并在其上安装和更新了 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 server 和 in the app 上都有效。
这里的一些示例使用 If 循环而不是 Do While Not,但它们都完成了相同的事情,我认为这不是问题所在。我也不认为这是问题所在,因为我从应用程序的另一个菜单选项中复制并粘贴了该部分,当我单击它时该选项有效。当我选择我添加的选项时,它只会引发错误。
谢谢,感谢任何人提供的任何帮助。
【问题讨论】:
-
strFamID 分配在哪里,看起来您需要在“ORDER BY ...”之前或“... = 1”和_之后有一个空格
-
I looked through a bunch of them, but the circumstances aren't exactly the same- 情况完全一样,在错误信息中列出:BOF或EOF为True,或者当前记录已被删除。因为您没有删除记录,所以它必须是 BOF 或 EOF。您正在检查 EOF,您还应该检查 BOF。如果它们都是 True 你没有数据。如果只有 BOF 为真,您需要致电MoveFirst。 -
@BillHileman 很好地抓住了缺失的空间,我添加了它
标签: vb6