【发布时间】:2020-01-21 06:38:30
【问题描述】:
我正在迁移旧版 Microsoft Access 应用程序以使用 SQL Server 作为后端。我注意到自从切换到 SQL Server 后,所有插入操作都出现了无效使用 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 Server 后端一起工作? (我知道我可以将代码更改为不引用它,但是这会在应用程序中多次发生,因此我不希望这样做)。
【问题讨论】:
-
检查 Access DB 中列的默认值,以及此代码是否正确复制到 SQL Server 并使用
CONTRAINTS -
UserID是 IDENTITY(Access 中的自动编号)列吗? -
是的,该值无疑来自 SQL Server 标识列之类的东西。在执行 .Update 之前,它不会被赋值。如果将 .Update 行放在检索值的行之前,是否会出现问题?
-
@Andre 是的,它是 Access 中的自动编号列
-
@GregLow 是的,它工作正常
标签: sql-server vba ms-access null ms-access-2010