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

https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/recordset-lastmodified-property-dao