元の KB 番号: 328828
注
基本的なマクロ、コーディング、相互運用性のスキルが必要です。 この記事は、Microsoft Access データベース (.mdb および .accdb) と Microsoft Access プロジェクト (.adp) に適用されます。
この記事では、クエリおよびフォームのデータを更新するときに、Microsoft Access で発生する可能性があるエラーについて説明します。 この記事では、エラーの原因と、それらのエラーのトラブルシューティング方法についても説明します。
クエリまたはフォームのデータを更新しようとすると、次のいずれかのエラー メッセージが表示されることがあります。
操作では、更新可能なクエリを使用する必要があります。
-又は-
このレコードセットは更新できません。
クエリのデータを更新するときに発生する可能性がある問題に関するトラブルシューティング情報
クエリが 3 つ以上のテーブルに基づいており、多対一対多のリレーションシップがある場合、クエリ内のデータを直接更新することはできません。 フォームまたはデータ アクセス ページでデータを更新できます。 これは、フォームの
RecordsetTypeプロパティが Dynaset (不整合な更新) に設定されている場合のクエリに基づいて行うことができます。クエリがクロス集計クエリの場合、クエリ内のデータを更新することはできません。
クエリが Microsoft SQL パススルー クエリの場合、クエリ内のデータを更新することはできません。
クエリがフィールド内の値の合計、平均、カウント、またはその他の種類の合計を計算している場合、クエリ内のデータを更新することはできません。 また、クロス集計、クエリ、選択クエリ、または合計もしくは集計関数を含むサブクエリから、[更新先] 行のフィールドを参照するクエリを更新することはできません。 この問題を回避するには、更新クエリの [更新 対象] 行でドメイン集計関数を使用します。 クロス集計クエリ、選択クエリ、または合計や集計関数を含むサブクエリからフィールドを参照できます。
クエリが Union クエリの場合、クエリ内のデータを更新することはできません。
クエリの [一意の値] プロパティが [はい] に設定されている場合、クエリ内のデータを更新することはできません。 この問題を回避するには、クエリの [一意の値] プロパティを [いいえ] に設定します。
クエリに、一意のインデックスのないリンクされた ODBC テーブル、または主キーのない Paradox テーブルが含まれている場合、クエリ内のデータを更新することはできません。 この問題を回避するには、リンク テーブルに主キーまたは一意のインデックスを追加します。
クエリまたは基になるテーブルに対する データの更新 アクセス許可がない場合、データを更新することはできません。 この問題を解決するには、データを更新するアクセス許可を割り当てます。
クエリに複数のテーブルまたは 1 つのクエリが含まれており、テーブルまたはクエリが デザイン ビューの結合行で結合されていない場合、クエリ内のデータを更新することはできません。 この問題を解決するには、テーブルを更新できるように、テーブルを正しく結合する必要があります。
更新するフィールドが計算フィールドの場合、クエリ内のデータを更新することはできません。
更新しようとしているフィールドが読み取り専用であるか、データベースが読み取り専用として開かれているか、データベースが読み取り専用ドライブにある場合、クエリ内のデータを更新することはできません。 この問題を回避するには、データベースを読み取り専用として開かないでください。 データベースが読み取り専用のドライブにある場合は、ドライブから読み取り専用属性を削除するか、読み取り専用ではないドライブにデータベースを移動します。
更新しようとしているレコード内のフィールドが削除された場合、または別のユーザーによってロックされている場合、クエリ内のデータを更新することはできません。 ロックされたレコードは、レコードのロックが解除されるとすぐに更新できます。
クエリが一対多リレーションシップを持つテーブルに基づいている場合、変更できない可能性があるフィールドの種類は次のとおりです。
- 「1」側から結合フィールドを選択します。
- "多" 側結合フィールドはデータシートに表示されません。
- "「一」側のデータを更新した後、「多」側の結合フィールドを参加させてください。"
- 外部結合を持つ一対多リレーションシップの "一" 側のテーブルの空白フィールドが存在します。
- ODBC テーブルの一意キー全体が出力ではありません。
次の一覧から正しいアクションを実行すると、これらの問題のいずれかを解決できます。
- 2 つのテーブル間で連鎖更新を有効にします。
- 新しいレコードを追加できるように、"多" 側の結合フィールドをクエリに追加します。
- レコードを保存します。 多側結合フィールドに変更を加えることができます。
- "多" 側のテーブルのフィールドに値を入力します。 これは、"1" 側の結合フィールドにそのレコードの値が含まれている場合にのみ実行できます。
- ODBC テーブルのすべての主キー フィールドを選択して、挿入を許可します。
フォーム内のデータを更新するときに発生する可能性がある問題に関するトラブルシューティング情報
フォームが複数のテーブルを持つストアド プロシージャに基づいている場合、フォーム内のデータを更新することはできません。
フォームが ActiveX データ オブジェクト (ADO) レコードセットに基づいている場合、フォーム内のデータを更新することはできません。 MSDataShape プロバイダーと SQL Server OLEDB プロバイダーを組み合わせて ADO レコードセットを作成する場合は、アクセス フォームを使用して ADO レコードセットのデータを編集できます。