Access クエリとフォームでデータを更新するときに発生する可能性があるエラーのトラブルシューティング方法

元の KB 番号: 328828

注:

基本的なマクロ、コーディング、相互運用性のスキルが必要です。 この記事は、Microsoft Access データベース (.mdb と .accdb) と Microsoft Access プロジェクト (.adp) に適用されます。

この記事では、クエリとフォームのデータを更新するときに Microsoft Access で発生する可能性があるエラーについて説明します。 この記事では、エラーの原因と、それらのエラーのトラブルシューティング方法についても説明します。

クエリまたはフォーム内のデータを更新しようとすると、次のいずれかのエラー メッセージが表示される場合があります。

更新可能なクエリであることが必要です。

または

このレコードセットは更新できません。

クエリでデータを更新するときに発生する可能性がある問題に関するトラブルシューティング情報

  • クエリが 3 つ以上のテーブルに基づいており、多対一対多のリレーションシップがある場合、クエリでデータを直接更新することはできません。 フォームまたはデータ アクセス ページでデータを更新できます。 これは、フォームのプロパティが Dynaset(一貫性のない更新) に設定されている場合RecordsetTypeのクエリに基づいて行うことができます。

  • クエリがクロス集計クエリの場合、クエリ内のデータを更新することはできません。

  • クエリが Microsoft SQL パススルー クエリの場合、クエリ内のデータを更新することはできません。

  • クエリがフィールド内の値の合計、平均、カウント、またはその他の種類の合計を計算している場合、クエリ内のデータを更新することはできません。 また、クロス集計、クエリ、選択クエリ、または集計関数または集計関数を含むサブクエリから、 Update To 行のフィールドを参照するクエリを更新することはできません。 この問題を回避するには、更新クエリの [ Update To]\(更新 対象\) 行の [ドメイン集計] 関数を使用します。 クロス集計クエリ、選択クエリ、または集計関数または集計関数を含むサブクエリからフィールドを参照できます。

  • クエリが Union クエリの場合、クエリ内のデータを更新することはできません。

  • クエリの [一意の値] プロパティが [はい] に設定されている場合、クエリ内のデータを更新することはできません。 この問題を回避するには、クエリの [一意の値] プロパティを [いいえ] に設定します。

  • 一意のインデックスのないリンクされた ODBC テーブル、または主キーのない Paradox テーブルがクエリに含まれている場合、クエリ内のデータを更新することはできません。 この問題を回避するには、リンク テーブルに主キーまたは一意のインデックスを追加します。

  • クエリまたは基になるテーブルに対する データの更新 アクセス許可がない場合は、データを更新できません。 この問題を解決するには、データを更新するためのアクセス許可を割り当てます。

  • クエリに複数のテーブルまたは 1 つのクエリが含まれており、テーブルまたはクエリが デザイン ビューの結合行で結合されていない場合、クエリ内のデータを更新することはできません。 この問題を解決するには、テーブルを更新できるように、テーブルを正しく結合する必要があります。

  • 更新するフィールドが計算フィールドである場合、クエリ内のデータを更新することはできません。

  • 更新しようとしているフィールドが読み取り専用であるか、データベースが読み取り専用として開かれている場合、またはデータベースが読み取り専用ドライブにある場合、クエリ内のデータを更新することはできません。 この問題を回避するには、データベースを読み取り専用として開かないでください。 データベースが読み取り専用のドライブにある場合は、ドライブから読み取り専用属性を削除するか、読み取り専用ではないドライブにデータベースを移動します。

  • 更新しようとしているレコードのフィールドが削除された場合、または別のユーザーによってロックされている場合、クエリ内のデータを更新することはできません。 ロックされたレコードは、レコードのロックが解除されるとすぐに更新できます。

  • クエリが一対多リレーションシップを持つテーブルに基づいている場合、変更できない可能性があるフィールドの種類は次のとおりです。

    • "1" 側の結合フィールド。
    • "多" 側結合フィールドはデータシートに表示されません。
    • "1" 側のデータを更新した後、"多" 側の結合フィールド。
    • 外部結合を持つ一対多リレーションシップの "1" 側のテーブルの空白フィールドが存在します。
    • ODBC テーブルの一意のキー全体が出力ではありません。

    次の一覧から正しいアクションを実行すると、これらの問題のいずれかを解決できます。

    • 2 つのテーブル間でカスケード更新を有効にします。
    • 新しいレコードを追加できるように、"多" 側の結合フィールドをクエリに追加します。
    • レコードを保存します。 "多" 側結合フィールドに変更を加えることができます。
    • "多" 側のテーブルのフィールドに値を入力します。 これは、"1" 側の結合されたフィールドにそのレコードの値が含まれている場合にのみ実行できます。
    • ODBC テーブルのすべての主キー フィールドを選択して、それらのテーブルへの挿入を許可します。

フォーム内のデータを更新するときに発生する可能性がある問題に関するトラブルシューティング情報

  • フォームが複数のテーブルを持つストアド プロシージャに基づいている場合、フォーム内のデータを更新することはできません。

  • フォームが ActiveX データ オブジェクト (ADO) レコードセットに基づいている場合、フォーム内のデータを更新することはできません。 MSDataShape と OLEDB プロバイダーの組み合わせを使用して ADO レコードセットを作成する場合は、アクセス フォームを使用して ADO レコードセットのデータを編集 SQL Serverできます。