Я в процессе перемещения нашей БД из брандмауэра доступа к серверу SQL Server, сохраняя переднюю часть Access. Одна из таблиц была настроена с идентификатором репликации для ПК. В качестве базы данных доступа мы могли вставлять значения в эту таблицу без ссылки на поле PK, так как Access автоматически генерирует новый GUID.Вставка в таблицу SQL Server с GUID pk из MS Access
У нас есть функция, которая создает запись для этой таблицы, которая больше не работает со связанной версией 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
End Sub
Я попытался с помощью NEWID() в строке SQL, но когда доступ работает оператор db.execute, я получаю сообщение об ошибке:. «Неопределенная функция„NewID“в выражении – ArcherBird