Applies ToAccess for Microsoft 365 Access 2021 Access 2019 Access 2016

最終更新日: 2020年 1 月 23 日

問題

通常、ID 列を持つ SQL Server 内のテーブルへのリンクを作成すると、Access ではその列はオートナンバー列として識別されます。

ID 列が [オートナンバー] フィールドとして識別されることを示す

Office 365 および Office 2016/2019 のバージョン 1912 の現在のチャネル ビルド (16.0.12325.*) では、ID 列が正しく識別されず、単に数字として認識されます。

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) を使用している場合。 これらのチャネルでは、修正プログラムがまだ提供されていないので、現在のチャネルに移行することをお勧めします。

注: バージョンを変更した後、影響を受けるリンクを更新して、それらが正しく動作することを確認してください。

エキスパートのアイコン (脳、歯車)

エキスパートに質問する

エキスパートとつながり、最新のニュース、更新プログラム、ベスト プラクティスについて議論し、ブログを参照します。

Microsoft 技術コミュニティ

コミュニティのアイコン

コミュニティでサポートを得る

サポート担当者、MVP、エンジニア、その他の Office ユーザーに質問し、解決策を見つけます。

Answers の Office フォーラム

機能リクエストのアイコン (電球、アイデア)

新機能の提案

ご意見ご感想をお待ちしております。 ご意見をお聞かせください。 すべてのコメントに必ず目を通しています。

フィードバックを送信する

関連項目

最近の Access の問題に関する修正プログラムと回避策

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。