2010-06-09 34 views
6

Eğer CurrentDb.Execute ile RecordsAffected kullanırsam, her zaman 0 değerini döndürür. İlk olarak bir Database nesnesinin bir örneğini yaparsam düzgün çalışır. Niye ya? Bunun gibiCurrentDb.RecordsAffected 0 değerini döndürür. Neden?

:

Dim Db As Database 
Set Db = CurrentDb 

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

yerine:

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

ben Access 2007 kullanıyorum ve Microsoft Office 12.0 Access veritabanı altyapısı Objects kitaplığı.

cevap

12

CurrentDB'yi her kullandığınızda, bu yeni bir örnektir.

1

With'u kullanın. Kodunuzu aşağıdaki gibi değiştirin:

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 
İlgili konular