2010-06-09 22 views
6

Wenn ich RecordsAffected mit CurrentDb.Execute verwende, wird immer 0 zurückgegeben. Wenn ich zuerst eine Instanz eines Datenbankobjekts erstelle, funktioniert es ordnungsgemäß. Warum?CurrentDb.RecordsAffected gibt 0 zurück. Warum?

So:

Dim Db As Database 
Set Db = CurrentDb 

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

Statt:

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

Ich verwende Access 2007 und das Microsoft Office 12.0 Access-Datenbank-Engine Objects Library.

Antwort

12

Jedes Mal, wenn Sie CurrentDB verwenden, handelt es sich um eine neue Instanz.

1

Verwenden Sie With. Ändern Sie Ihren Code in:

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 
Verwandte Themen