最終更新日: 2020年 1 月 23 日
問題
通常、ID 列を持つ SQL Server 内のテーブルへのリンクを作成すると、Access ではその列はオートナンバー列として識別されます。
Office 365 および Office 2016/2019 のバージョン 1912 の現在のチャネル ビルド (16.0.12325.*) では、ID 列が正しく識別されず、単に数字として認識されます。
これは、新しいリンクの作成にユーザー インターフェイスとコードのいずれを使用した場合でも発生しますが、新しいリンクでのみ発生します。 リンクを更新しない限り、既存のリンクが影響を受けることはありません。
Access では、多くの理由から ID 列の正確な確認が実行されるため、アプリケーションは複数の方法で影響を受ける可能性があります。
たとえば、新しく追加されたレコードを識別するのに通常は ID 列が使用されます。 ID 列が使用されない場合は、新しく追加された行を Access が正確に見つけることができない可能性があり、その場合、その行のフィールドは "#Deleted" と表示されます。
RecordSet.LastModified プロパティを使用して最後に追加されたレコードの値を取得する場合も、同様の問題が発生することがあります。 次のコードを実行したとします。
Set rst = CurrentDb().OpenRecordset("tblWithIdentityColumn")
rst.AddNew
rst!CompanyName = "Contoso"
rst.Update
rst.Bookmark = rst.LastModified
MsgBox rst!CompanyName
エラー 3167 が発生する可能性があります。
いずれの場合も、レコードは正常に追加されますが、Acess ではそのレコードを正常に見つけることができません。
Access では通常、ID 列を直接更新しようとする試行は無視されます。 ただし、上記のビルドではそのような試行が Access で許可されますが失敗し、次のエラー メッセージが表示されます。
[SQL Server] Cannot insert explicit value for identity column in table 'tblOrders' when IDENTITY_INSERT is set to OFF.(#544)
状態: 修正済み
この問題の修正プログラムは、バージョン 1912 で使用できるようになりました。 修正プログラムを受け取るには、明示的に更新を強制する必要がある場合があります。 固定ビルド番号は 12325.20344 である必要があります。
Insider スロー (バージョン 2001) または Insider ファースト (バージョン 2002) を使用している場合。 これらのチャネルでは、修正プログラムがまだ提供されていないので、現在のチャネルに移行することをお勧めします。
注: バージョンを変更した後、影響を受けるリンクを更新して、それらが正しく動作することを確認してください。