上次更新:2020 年 1 月 23 日
問題
當您在具有識別資料行的 SQL Server 中建立資料表連結時,Access 通常會將該資料行視為 [自動編號] 資料行。
在 Office e365 版本 1912 的目前通道組建 (16.0.12325.*) 和 Office 2016/2019 中,識別資料行無法正確辨識,且只能辨識為數字。
當您透過使用者介面或透過程式碼建立新連結時,就會發生這種情況,但只會發生在新連結上。 除非重新整理連結,否則現有的連結不會受到影響。
Access 會因多種目的使用識別資料行的正確識別,因此這可能以多種方式影響應用程式。
例如,識別資料行通常是用來識別新增的記錄。 當不使用識別資料行時,Access 可能無法正確找到新增的資料列,這會導致資料列中的欄位顯示為 #Deleted。
在使用 RecordSet.LastModified 屬性擷取最近新增的記錄值時,可能會看到類似的問題發生。 下列程式碼:
Set rst = CurrentDb().OpenRecordset("tblWithIdentityColumn")
rst.AddNew
rst!CompanyName = "Contoso"
rst.Update
rst.Bookmark = rst.LastModified
MsgBox rst!CompanyName
可能導致錯誤 3167:
在這兩種情況下,記錄都會成功新增,但是 Access 將無法成功找到記錄。
Access 通常也會忽略直接更新識別資料行的嘗試。 不過,在這些組建中,可能會允許嘗試但失敗,並產生錯誤訊息:
[SQL Server] 當 IDENTITY_INSERT 設為 [關閉] 時,無法在資料表 'tblOrders' 中插入識別資料行的明確值。(#544)
狀態:已修正
此問題的修正程式現已推出版本 1912。 您可能需要明確地強制接收修正程式的更新。 已修正組建編號應為 12325.20344。
如果您使用的是測試人員 - 慢(版本 2001)或測試人員 - 快( 版本 2002)。 那些通道尚未提供此修正程式,因此您可能需要移至目前通道。
附註: 變更版本之後,您必須重新整理任何受影響的連結,以確保它們再次正確運作。