DAO: dbSeeChanges改变Recordset对象的FindFirst方法的行为



最近我需要将参数dbSeeChanges添加到Database对象的OpenRecordset方法中,以便为SQL Server渐进式迁移系统做准备。

问题是这个变化似乎以下列方式改变了Recordset对象的功能。

以前,如果我有一个没有返回任何记录的Recordset,并且我使用FindFirst方法,它会顺利地运行而没有错误,它只是没有找到任何东西并继续前进。但是现在,在相同的场景中,该操作会引发以下运行时错误:3021 "No current record"

给定一个不返回任何记录的记录集,下面的代码运行时没有错误:

Dim dbCurrDB As Dao.Database
Dim rstA As Recordset
Set dbCurrDB = CurrentDB
Set rstA = dbCurrDB.OpenRecordset("SomeTable", dbOpenDynaset)
With rst
.FindFirst "Id=1"
If .NoMatch=False Then
.Edit
!SomeField=SomeValue
.Uptade
End If
End With

在相同的条件下,下面的代码会在'。FindFirst "Id=1"指令:

Dim dbCurrDB As Dao.Database
Dim rstA As Recordset
Set dbCurrDB = CurrentDB
Set rstA = dbCurrDB.OpenRecordset("SomeTable", dbOpenDynaset, dbSeeChanges)
With rst
.FindFirst "Id=1"
If .NoMatch=False Then
.Edit
!SomeField=SomeValue
.Uptade
End If
End With

我知道如何解决这个问题(尽管它最终将迫使我纠正所有遗留…)。我想知道为什么会这样。到底是什么改变了?与记录集对象的指针的东西?还有,是否有其他意想不到的副作用。

我想知道是否有一些详细的DAO技术规范,可以向我展示幕后Recordset对象的方法到底发生了什么。

提前感谢!

检查记录,否则什么也找不到:

With rst
If .RecordCount > 0 Then
.FindFirst "Id=1"
If .NoMatch = False Then
.Edit
!SomeField.Value = SomeValue
.Update
End If
End If
.Close
End With

相关内容

  • 没有找到相关文章

最新更新