我正在将我们的数据库从Access后端移动到SQL Server后端,同时保持Access前端。其中一个表的设置是为其PK的复制ID。作为访问数据库,我们可以在不引用PK字段的情况下将值插入到此表中,因为Access会自动生成新的GUID。从MS Access插入到带有GUID pk的SQL Server表中
我们有一个函数可以建立一个记录,插入这张表中,该表不再与表的链接SQL Server版本一起工作,我敢肯定它必须与这个replcationID字段有关。在SQL Server中,它作为数据类型“uniqueidentifier”导入。当函数运行时,它不会返回错误,但也不会插入任何内容。
我想知道是否有办法让这个工作不需要改变为直通。如何让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(),但是当进入运行db.execute声明,我得到一个错误:在表达“未定义功能‘NEWID’ – ArcherBird