Microsoft Access to SQL Server Transition - 在插入时无效使用 null
Microsoft Access to SQL Server Transition - Invalid use of null on insert
我正在迁移旧版 Microsoft Access 应用程序以使用 SQL 服务器作为后端。我注意到,自从切换到 SQL 服务器后,所有插入内容现在都出现无效使用 null 错误。
根据一些测试,我发现这是由于 VBA 的书写方式所致。主键在创建记录之前被引用,毫不奇怪它为空。
Dim recordSet As DAO.Recordset
Dim newID As Long
Set recordSet = dbLocal.OpenRecordset("Select * FROM tblUser", dbOpenDynaset, dbSeeChanges)
With recordSet
.AddNew
newID = !UserID
.Update
End With
recordset.Close
现在这在旧的 Access to Access 应用程序中工作正常。它是如何做到这一点的,我怎样才能使它与新的 SQL 服务器后端一起工作?
(我知道我可以将代码更改为不引用它,但是这种情况在应用程序中多次发生,因此我不希望这样做)。
我很惊讶这竟然奏效了。正确的做法是这样的:
With myRecordSet
.AddNew
' Set all data columns (not the IDENTITY column)
!Data = someData
' Save new record
.Update
' Move the recordset pointer to the new record to read its ID
.Bookmark = .LastModified
newID = !UserID
' Done
.Close
End With
我正在迁移旧版 Microsoft Access 应用程序以使用 SQL 服务器作为后端。我注意到,自从切换到 SQL 服务器后,所有插入内容现在都出现无效使用 null 错误。
根据一些测试,我发现这是由于 VBA 的书写方式所致。主键在创建记录之前被引用,毫不奇怪它为空。
Dim recordSet As DAO.Recordset
Dim newID As Long
Set recordSet = dbLocal.OpenRecordset("Select * FROM tblUser", dbOpenDynaset, dbSeeChanges)
With recordSet
.AddNew
newID = !UserID
.Update
End With
recordset.Close
现在这在旧的 Access to Access 应用程序中工作正常。它是如何做到这一点的,我怎样才能使它与新的 SQL 服务器后端一起工作? (我知道我可以将代码更改为不引用它,但是这种情况在应用程序中多次发生,因此我不希望这样做)。
我很惊讶这竟然奏效了。正确的做法是这样的:
With myRecordSet
.AddNew
' Set all data columns (not the IDENTITY column)
!Data = someData
' Save new record
.Update
' Move the recordset pointer to the new record to read its ID
.Bookmark = .LastModified
newID = !UserID
' Done
.Close
End With