2017-09-08 1 views
0

런타임 오류 3021 : 현재 레코드 없음을 제공하는이 코드를 해결하는 방법에 대한 자세한 내용은 아직 모릅니다.런타임 오류 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 

그래서 첫 번째 섹션은 작동하지만, 그것이 오류를 throw 곳 = rsQuery!의 PAYPLANNAME 인 라인 num3에 도달 할 때입니다. 귀하가 제공 할 수있는 통찰력에 대해 미리 감사드립니다.

+0

당신은 당신이 결과를 반환 있는지 확인 할 레코드 수를 확인해야합니다. rsQuery.RecordCount 또는 rsQuery.EOF – Sorceri

+0

@ Sorceri hmm 그래서 방금 시도하고 debug.print가 1을 반환했습니다 ... 그러나 매개 변수를 사용하여 쿼리 자체를 실행하면 12 개의 결과가 반환됩니까? –

+0

'rsQuery.MoveLast rsQuery.MoveFirst' 레코드 세트를 열면 바로 사용하여 카운트를 강제 실행하십시오. 왜 루프가없는 MoveNext가 있습니까? – June7

답변

0

당신은 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 
+0

이것은 완벽하게 작동했습니다. 정말 고마워요! –

+0

그래서 내가 실행중인 실제 쿼리에서 조건을 제거하지만 코드에 유지하면 어떤 이유로 인해 현재 레코드가 없습니다라는 오류가 발생합니다. 그와 관련된 아이디어가 있습니까? –

+0

오, 알아 냈어 ... 분명히 나는 ​​단지 10 개의 결과 만 반환하도록 쿼리를 제한했다. ... durrr –

관련 문제