【发布时间】:2017-02-20 18:03:20
【问题描述】:
我正在将我们的数据库从 Access 后端移动到 SQL Server 后端,同时保留 Access 前端。其中一张表设置了其 PK 的复制 ID。作为一个访问数据库,我们可以在不引用 PK 字段的情况下将值插入到该表中,因为 Access 会自动生成一个新的 GUID。
我们有一个函数可以构建一条记录以插入到该表中,该函数不再适用于该表的链接 SQL Server 版本,我很确定它一定与这个 replcationID 字段有关。在 SQL Server 中,它作为数据类型“唯一标识符”导入。当函数运行时,它不会返回任何错误,但也不会插入任何内容。
我想知道是否有一种方法可以在不将其更改为直通的情况下使其正常工作。如何让 MS Access 在插入新记录时告诉 SQL Server 生成新的 GUID。
附带说明,PK 字段称为 PurchaseID,当前在 vba 中未引用(因为它曾经为该字段自动生成)
Public Sub BuildReorderRecord(Market As String, MPID As String, FloorsetID As String)
Dim values As String
Dim sql As String
Dim P3ID As String
Dim Username As String
Dim dt As String
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT ID FROM tblAttributes WHERE MPID = """ & MPID & """")
'Get P3ID and auditing values
dt = Now()
Username = Environ("USERNAME")
P3ID = rs![ID]
'build record values string
values = """" & P3ID & """, """ & Market & """, """ & MPID & "', """ & FloorsetID & """"
values = values & ", #" & dt & "#, """ & Username & """, #" & dt & "#, """ & Username & """"
'build sql string
sql = "INSERT INTO tblReorders (P3ID, country, mpid, floorsetID"
sql = sql & ", CreateDate, CreatorUsername, ChangeRecord_Timestamp, ChangeRecord_Username)" & vbNewLine
sql = sql & "VALUES(" & values & ")"
'insert the new record
db.Execute sql
Set db = Nothing
Set rs = Nothing
结束子
【问题讨论】:
-
我尝试在 sql 字符串中使用 newid(),但是当 access 运行 db.execute 语句时,我得到一个错误:“Undefined function 'newid' in expression.
标签: sql-server vba ms-access