【发布时间】:2017-09-08 17:38:55
【问题描述】:
不完全确定如何修复这个给我运行时错误 3021: No Current Record 的代码。
目的是单击此按钮,它将使用查询的第一条记录的结果填充几个文本框。然后应该使用 MoveNext 使用查询结果的下一条记录填充另外两个文本框。
Private Sub btnSCC07_Click()
Dim dbs As DAO.Database
Dim rsTable As DAO.Recordset
Dim rsQuery As DAO.Recordset
Set dbs = CurrentDb
Set rsQuery = dbs.OpenRecordset("SELECT * FROM qrySccS2 WHERE PAYORNAME = 'Medicaid' AND OVERRIDECODESALL = 7", dbOpenDynaset)
rsQuery.FindFirst ("[PAYORNAME]='Medicaid'")
num1 = rsQuery!PAYPLANNAME
num2 = rsQuery!Count
txtMedicaid9 = num1
txtMedicaidCount9 = num2
Debug.Print (txtMedicaid9)
rsQuery.MoveNext
Debug.Print ("Test")
num3 = rsQuery!PAYPLANNAME
num4 = rsQuery!Count
txtMedicaid10 = num3
txtMedicaidCount10 = num4
rsQuery.Close
Set rsQuery = Nothing
所以第一部分有效,但是当它到达 num3 = rsQuery!PAYPLANNAME 行时,它会引发错误。提前感谢您提供的任何见解。
【问题讨论】:
-
您需要检查记录数以确保返回结果。 rsQuery.RecordCount 或 rsQuery.EOF
-
@Sorceri 嗯,所以我只是尝试了一下,debug.print 返回了 1……但是当我使用参数运行查询本身时,它返回 12 个结果?
-
在打开记录集
rsQuery.MoveLast rsQuery.MoveFirst之后使用行来强制计数。为什么你有一个没有循环的 MoveNext? -
@June7 所以我在
Set rsQuery = dbs.OpenRecordset行之后插入了rsQuery.MoveLast和rsQuery.MoveFirst,它仍然在即时窗口中返回1并抛出错误。