CurrentDb.RecordsAffected возвращает 0. Почему?

Если я использую RecordsAffected с CurrentDb.Execute, он всегда возвращает 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

Я использую Access 2007 и библиотеку объектов ядра СУБД Microsoft Office 12.0 Access.

2 ответов


каждый раз, когда вы используете CurrentDB, это новый экземпляр.


использовать 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