クエリ データシート ビュー のデータを編集して、基になるテーブル内のデータを変更できない場合があります。 この記事では、クエリ データを編集できるタイミング、クエリ データを編集できない場合、および基になるデータを編集できるようにクエリの設計を変更する方法を理解するのに役立ちます。
この記事の内容
概要
データシート ビューでクエリを開くと、データを編集する必要がある場合があります。 エラーが発生した場合や、古い情報が表示される場合があります。 クエリの構築方法に応じて、クエリ データシートでデータを直接編集できます。
クエリ データシートでデータを編集しようとしても何も起こらない場合、または Windows がサウンドを再生しても編集が行われない場合は、編集を実行できません。 クロス集計クエリなど、クエリ自体を編集できない場合があります。 また、編集しようとしているフィールドだけが編集に使用できない場合もあります。たとえば、フィールドが集計関数 (平均など) に基づいている場合などです。 どちらの場合も、編集を有効にするために何かを行うことができます。
クエリ データシート ビューでデータを編集するだけでなく、 更新クエリ を使用してテーブル内のデータを更新することもできます。 この記事では、更新クエリについては説明しません。
更新クエリの詳細については、「更新クエリを作成して実行する」を参照してください。
通常、クエリ データシート ビューでデータを編集する場合は、クエリの基になるテーブルに変更を保存します。 これらのテーブル内のデータを変更しないが、データを編集し、編集したデータを編集した後も保持する場合は、 テーブル作成クエリ を使用して、最初にデータを編集できる新しいテーブルを作成できます。 テーブル作成クエリを使用して、新しいテーブルとして編集できないクエリの結果を保存し、その新しいテーブル内のデータを編集することもできます。 この記事では、テーブル作成クエリを作成して実行する方法については説明しません。
テーブル作成クエリの詳細については、テーブル作成クエリCreate記事を参照してください。
クエリでデータを編集できるのはいつですか?
クエリが 1 つのテーブルのみに基づいている場合、または互いに 一対一リレーションシップ を持つ 2 つのテーブルに基づいている場合は、常にクエリ内のデータを編集できます。
注: クエリでデータを編集できる場合でも、そのフィールドの一部を編集できない場合があります。 このような場合は、次のセクションに一覧表示されます。
クエリでデータを編集できないのはいつですか?
次の場合、クエリ内のデータを編集することはできません。
-
クエリは クロス集計クエリです。
-
クエリは SQL クエリです。
-
編集しようとしているフィールドは、 集計フィールドです。 この場合、他のフィールドを編集できる場合があります。
-
クエリは 3 つ以上のテーブルに基づいており、多対一対多のリレーションシップがあります。
注: この場合、クエリ データシートを編集することはできませんが、フォームの RecordsetType プロパティが Dynaset (不整合なUpdates) に設定されている場合は、フォーム内のデータを編集できます。
-
クエリには GROUP BY 句が含まれています。
操作方法データを編集できるようにクエリを変更しますか?
次の表に、クエリを編集できない場合のケースを、クエリ データシートを編集できるようにメソッドと組み合わせて示します。
次の場合、クエリ データシートの値を編集することはできません。 |
クエリ データシートを編集できるようにするには: |
クエリの [一意の値] プロパティは [ はい] に設定されます。 |
クエリの [一意の値] プロパティを [いいえ] に設定します。 このプロパティを設定する方法については、次のセクション「 Unique Values プロパティを No に設定する」を参照してください。 |
クエリには、 一意なインデックス のないリンクされた ODBC データベース テーブルと、 主キーのない Paradox テーブルが含まれます。 |
リンク されたデータベースのベンダーが提供するメソッドを使用して、リンク テーブルに主キーまたは一意のインデックスを追加します。 |
基になるテーブルに対するデータ更新アクセス許可がありません。 |
データの更新アクセス許可を割り当てます。 |
クエリには複数のテーブルまたは 1 つのクエリが含まれており、テーブルまたはクエリはデザイン ビューの結合行によって結合されません。 |
適切な結合をCreateします。 結合を作成する方法については、「結合Create」セクションを参照してください。 |
データベースは読み取り専用として開かれているか、読み取り専用ドライブにあります。 |
[ 読み取り専用を開く] を選択せずに、データベースを閉じてもう一度開きます。または、データベースが読み取り専用ドライブにある場合は、ドライブから読み取り専用属性を削除するか、読み取り専用ではないドライブにデータベースを移動します。 |
更新しようとしているレコードのフィールドが削除されるか、別のユーザーによってロックされます。 |
レコードのロックが解除されるまで待ちます。 ロックされたレコードは、レコードのロックが解除されるとすぐに更新できます。 他のユーザーがレコードをロックした操作を完了するまで待ちます。 |
クエリは、 一対多リレーションシップを持つテーブルに基づいており、"多" 側の結合フィールドは出力フィールドではありません。 この場合、"1" 側の結合フィールドのデータを編集できません。 |
リレーションシップの "多" 側の結合フィールドをクエリ出力フィールドに追加します。 結合フィールドを追加する方法については、「"多" 側からクエリ出力フィールドに結合フィールドを追加する」セクションを参照してください。 |
"多" 側 (データを編集した後) の結合フィールドは"1" 側にあります。 |
Shift キーを押しながら F9 キーを押して変更をコミットし、クエリを更新します。 |
一対多リレーションシップの "1" 側のテーブルには空白フィールドがあり、結合は右外部結合です。 |
"1" 側のそのフィールドに値があることを確認します。 "多" 側の結合フィールドは、"1" 側のそのフィールドに値がある場合にのみ編集できます。 |
リンクされた ODBC データベース テーブルを使用しており、リンク テーブルの一意のインデックスのすべてのフィールドがクエリ出力に含まれているわけではありません。 |
ODBC テーブルの一意のインデックスのすべてのフィールドをクエリ出力フィールドに追加します。 フィールドを追加する方法については、「 リンクされた ODBC テーブルから一意のインデックス フィールドを追加する」セクションを参照してください。 |
[一意の値] プロパティを [いいえ] に設定します
-
クエリをデザイン ビューで開きます。
-
プロパティ シートが開かない場合は、F4 キーを押して開きます。 クエリ デザイン グリッドで 1 回クリックして、プロパティ シートにフィールド プロパティではなくクエリ プロパティが表示されるようにします。
-
プロパティ シートで、[ 一意の値 ] プロパティ ボックスを見つけます。 その横にあるボックスをクリックし、そのボックスの矢印をクリックし、[ いいえ] をクリックします。
Create結合
-
クエリをデザイン ビューで開きます。
-
結合するテーブルまたはクエリごとに、結合フィールドをそのテーブルまたはクエリから、結合を作成するテーブルまたはクエリ内の対応するフィールドにドラッグします。
結合の作成の詳細については、テーブル とクエリの結合に関する記事を参照してください。
"多" 側の結合フィールドをクエリ出力フィールドに追加する
-
クエリをデザイン ビューで開きます。
-
クエリ デザイナーで、関連する 1 対多リレーションシップに対応する結合を見つけます。
-
一対多リレーションシップの "多" 側から結合フィールドをダブルクリックします。 結合フィールドがフィールド グリッドに表示され、出力フィールドであることを示します。
リンクされた ODBC テーブルから一意のインデックス フィールドを追加する
-
クエリをデザイン ビューで開きます。
-
クエリ デザイナーで、リンクされた ODBC テーブルを見つけます。
-
一意のインデックス フィールドには、フィールド名の横にキー 記号が付きます。 フィールド グリッドにまだ存在しない各フィールドをダブルクリックします。 各フィールドがフィールド グリッドに表示され、現在は出力フィールドであることを示します。