运行时错误3021

时间:2017-09-08 17:38:55

标签: ms-access access-vba

不完全确定如何修复此代码,这会给我一个运行时错误3021:没有当前记录。

目的是单击此按钮,它将使用查询的第一条记录的结果填充几个文本框。然后,它应该使用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就是它抛出错误的地方。提前感谢您提供的任何见解。

1 个答案:

答案 0 :(得分:0)

您应该使用 NoMatch EOF 安全地玩游戏:

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