2013-08-06 4 views
1

아래 코드를 사용하면 때때로 오류 3021이 발생합니다. 이는 레코드 집합에 레코드가 하나만있을 때만 발생합니다. 이유와 해결 방법을 알려주시겠습니까? 나는 모든 것을 시도한 것 같다!레코드 집합에서 항목을 삭제할 때 오류 3021

감사

Private Sub cmdDelSelectedAction_Click() 

response = MsgBox("Are you sure?", vbYesNo, "Confirmation required") 
If response = vbNo Then Exit Sub 

If Me.[Arrangement-Actions subform].Form.Recordset.EOF Then 
    Me.[Arrangement-Actions subform].Form.Recordset.MovePrevious 
End If 

If Me.[Arrangement-Actions subform].Form.Recordset.BOF Then 
    Me.[Arrangement-Actions subform].Form.Recordset.MoveNext 
End If 

Me.[Arrangement-Actions subform].Form.Recordset.Delete 
Me.[Arrangement-Actions subform].Form.Recordset.MoveNext 

End Sub 
+3

하나의 레코드가 있고이를 삭제하면 MoveNext 호출은 어떻게 작동합니까? – LarsTech

+0

오류가 발생하면 어떤 행이 강조 표시됩니까? – PowerUser

+0

LarsTech - 여기에 실수를했을 수도 있습니다. .MoveNext 호출을 추가하기 전에 오류가 발생했습니다. PowerUser - RecordSet.Delete 라인에 오류가 있습니다. – edbyford

답변

0

그것은 오랜만이야,하지만 난 코드는 다음과 같이 것이라고 생각 : 나는 당신의 코드에서 당신이 확인을 요청할 것이 조금 이상한 찾을

Private Sub cmdDelSelectedAction_Click() 
    Dim rec As Recordset = Me.[Arrangement-Actions subform].Form.Recordset 
    If Not rec.BOF Or Not rec.EOF Then 
    If MsgBox("Are you sure?", vbYesNo, "Confirm") = vbYes Then 
     rec.Delete 
    End If 
    End If 
End Sub 

레코드를 삭제 한 다음 레코드를 삭제하기 전에 레코드 세트에서 MoveNext 또는 MovePrevious를 수행하십시오. 최종 사용자가 기대했던 것보다 다른 레코드를 삭제할 수 있기 때문에 그렇게하지 않을 것입니다.

관련 문제