2010-06-09 5 views
6

RecordsAffected를 CurrentDb.Execute와 함께 사용하면 항상 0을 반환합니다. 먼저 데이터베이스 개체의 인스턴스를 만들면 올바르게 작동합니다. 왜? 이처럼CurrentDb.RecordsAffected는 0을 반환합니다. 왜?

:

Dim Db As Database 
Set Db = CurrentDb 

Db.Execute "DELETE * FROM [Samples] WHERE Sample=5" 
If Db.RecordsAffected = 0 Then 
    MsgBox "Error" 
End If 

대신 :

CurrentDb.Execute "DELETE * FROM [Samples] WHERE Sample=5" 
If CurrentDb.RecordsAffected = 0 Then 
    MsgBox "Error" 
End If 

내가 액세스 2007을 사용하고 있습니다 및 Microsoft Office 12.0 Access 데이터베이스 엔진에서 개체 라이브러리를.

답변

12

CurrentDB를 사용할 때마다 새로운 인스턴스가됩니다.

1

With을 사용하십시오. 코드를 다음으로 변경하십시오.

Dim Db As Database 
Dim recordAffect = Integer 
Set Db = CurrentDb 
With Db 
    .Execute "DELETE * FROM [Samples] WHERE Sample=5" 
    recordAffect = .RecordsAffected 
    'If Db.RecordsAffected = 0 Then 
    If (recordAffect = 0) Then 
    MsgBox "Error" 
    End If 
End With 
관련 문제