2010-06-09 6 views
6

Si j'utilise RecordsAffected avec CurrentDb.Execute, il renvoie toujours 0. Si je crée d'abord une instance d'un objet Database, cela fonctionne correctement. Pourquoi?CurrentDb.RecordsAffected renvoie 0. Pourquoi?

Comme ceci:

Dim Db As Database 
Set Db = CurrentDb 

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

Au lieu de:

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

J'utilise Access 2007 et le moteur de base de données Microsoft Office Access 12.0 bibliothèque d'objets.

Répondre

12

Chaque fois que vous utilisez CurrentDB, il s'agit d'une nouvelle instance.

1

Utilisez With. Changez votre code pour:

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 
Questions connexes