【问题标题】:Run-time error 3021运行时错误 3021
【发布时间】: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.MoveLastrsQuery.MoveFirst,它仍然在即时窗口中返回1并抛出错误。

标签: ms-access vba


【解决方案1】:

您应该谨慎使用 NoMatchEOF

Set rsQuery = dbs.OpenRecordset("SELECT * FROM qrySccS2 WHERE PAYORNAME = 'Medicaid' AND OVERRIDECODESALL = 7", dbOpenDynaset)

If rsQuery.RecordCount > 0 Then
    rsQuery.FindFirst "[PAYORNAME]='Medicaid'"
    If Not rsQuery.NoMatch Then
        num1 = rsQuery!PAYPLANNAME.Value
        num2 = rsQuery!Count.Value
        txtMedicaid9 = num1
        txtMedicaidCount9 = num2
        Debug.Print txtMedicaid9

        If Not rsQuery.EOF Then
            rsQuery.MoveNext
            Debug.Print "Test"
            num3 = rsQuery!PAYPLANNAME.Value
            num4 = rsQuery!Count.Value
            txtMedicaid10 = num3
            txtMedicaidCount10 = num4
        End If
    End If
End If
rsQuery.Close

Set rsQuery = Nothing

【讨论】:

  • 因此,由于某种原因,当我删除运行它的实际查询中的条件但将其保留在代码中时,它给了我没有找到当前记录的错误。有什么想法吗?
  • 哦,我想通了...显然我已将查询限制为仅返回 10 个结果.... durrr
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
相关资源
最近更新 更多