Microsoft Access к SQL Server Transition - недопустимое использование нулевого значения при вставке - PullRequest
0 голосов
/ 20 сентября 2019

Я перевожу устаревшее приложение Microsoft Access для использования SQL Server в качестве бэкэнда.С момента перехода на SQL Server я заметил, что все вставки теперь приводят к недопустимому использованию нулевых ошибок.

Из некоторых проверок, которые я обнаружил, это связано с тем, как написан 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?(Мне известно, что я могу изменить код, чтобы он не ссылался на него, однако в приложении это происходит несколько раз, поэтому я бы предпочел этого не делать).

1 Ответ

0 голосов
/ 20 сентября 2019

Я удивлен, что это когда-либо работало.Правильный способ сделать это так:

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

...