Access デスクトップ データベースで大量のデータをすばやく削除したり、一連のデータを定期的に削除したりする場合は、クエリで条件を指定してデータをすばやく検索および削除できるため、削除クエリまたは更新クエリが便利な場合があります。 保存されたクエリを再利用できるため、クエリの使用は時間短縮になる可能性もあります。
注: データを削除する前、または削除クエリを実行する前に、Access デスクトップ データベースのバックアップを作成していることを確認してください。
削除するレコードが数件の場合は、クエリを使う必要はありません。 データシート ビューでテーブルを開き、削除するフィールド (列) またはレコード (行) を選んで、Del キーを押すだけです。
重要: この記事の内容が該当するのは、削除クエリをデスクトップ データベースで使う場合だけです。 削除クエリや更新クエリを Access Web アプリケーションで使うことはできません。
この記事の内容
クエリの種類を選ぶ
データベースからデータを削除するには、更新クエリまたは削除クエリを使います。 次の表の詳細情報に基づいて、クエリを選んでください。
クエリの種類 |
用途 |
結果 |
---|---|---|
削除クエリを使用する |
レコード (行) 全体を 1 つのテーブルまたは関連する 2 つのテーブルから同時に削除する。 注: レコードが一対多リレーションシップの "一" 側に存在する場合、削除クエリを実行する前にリレーションシップの変更が必要となる場合があります。 「関連テーブルからデータを削除する」セクションをご覧ください。 |
クエリを削除すると、レコードを一意に識別するためのキー値も含め、各フィールドのすべてのデータが削除されます。 |
更新クエリを使用する |
テーブルの個々のフィールド値を削除する。 |
既存の値を NULL 値 (データなし) または長さ 0 の文字列 (間にスペースのない二重引用符のペア) に更新することで、値を簡単に削除できます。 |
クエリを使ってデータを削除する前の確認事項
-
ファイルが読み取り専用でないことを確認します。
-
[スタート] を右クリックして、[エクスプローラー] をクリックします。
-
データベース ファイルを右クリックして、[プロパティ] をクリックします。
-
[読み取り専用] 属性がオンになっているか確認します。
-
-
レコードをデータベースから削除するために必要な権限があることを確認します。 判断できない場合は、システム管理者またはデータベース デザイナーに問い合わせてください。
-
データベース内のコンテンツが有効になっていることを確認します。 既定では、データベースが信頼されていない場合、すべてのアクション クエリ (削除、更新、テーブル作成クエリ) がブロックされます。 データベースの信頼の詳細については、「無効モードによってクエリがブロックされないようにする」セクションをご覧ください。
-
削除するデータを使用しているすべてのテーブル、フォーム、クエリ、レポートを閉じるよう、データベースの他のユーザーにお願いします。 これにより、ロック違反を回避できます。
-
レコードを編集または削除する前に、変更した内容を元に戻したい場合に備えて、データベースのバックアップ コピーを作成することをお勧めします。
ヒント: 多数のユーザーがデータベースに接続している場合、場合によっては、データベースを閉じてから、[排他] モードでもう一度開く必要があります。
データベースを排他モードで開くには、次の手順に従います。
-
[ファイル]、[開く] の順にクリックします。
-
データベースを参照して選び、[開く] の右側にある下向き矢印をクリックして、[排他モードで開く] をクリックします。
データベースをバックアップする
-
[ファイル] をクリックし、[名前を付けて保存] をポイントします。
-
[データベースに名前を付けて保存] をクリックし、[データベースのバックアップ] をクリックします。 元のファイルが閉じられてバックアップが作成され、元のファイルが再度開かれます。
-
[名前を付けて保存] をクリックし、バックアップ コピーの名前と場所を指定し、[保存] をクリックします。
注: 読み取り専用のデータベース、または前のバージョンの Access で作成されたデータベースを使っている場合、データベースのバックアップを作成できないという旨のメッセージが表示されることがあります。
バックアップに戻すには、元のファイルを閉じて名前を変更し、バックアップ コピーが元のバージョンの名前を使用できるようにします。 元のバージョンの名前をバックアップ コピーに指定し、名前を変更したバックアップ コピーを Access で開きます。
削除クエリを使用する
削除クエリを作成するには、[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。 レコードを削除する各テーブルをダブルクリックし、[ 閉じる] をクリックします。
クエリ デザインの上の部分に、テーブルがウィンドウとして表示されます。 フィールドの一覧で、アスタリスク (*) をダブルクリックして、テーブル内のすべてのフィールドをデザイン グリッドに追加します。
削除クエリで特定の抽出条件を使用する
重要: 抽出条件を使って、削除したいレコードだけが返されるようにします。 そうしないと、削除クエリによりテーブル内のすべてのレコードが削除されます。
削除の条件として指定するフィールドをダブルクリックし、クエリ デザイナーの [抽出条件] 行に条件を 1 つ入力してから、各抽出条件フィールドの [表示] チェック ボックスをオフにします。
たとえば、このオプションは、得意先の保留中の注文をすべて削除したい場合などに使います。 このようなレコードだけを検索するには、クエリ デザインのグリッドに [得意先 ID] フィールドと [受注日] フィールドを追加してから、得意先の ID 番号、その得意先の注文が無効になった日付を入力します。
-
[デザイン] タブで、[表示]、[データシート ビュー] の順にクリックします。
-
削除したいレコードがクエリで返されたことを確認してから、Ctrl キーを押しながら S キーを押してクエリを保存します。
-
クエリを実行するには、ナビゲーション ウィンドウでクエリをダブルクリックします。
更新クエリを使用する
注: Access Web アプリでは、更新クエリ オプションを利用できません。
このセクションでは、更新クエリを使ってテーブルのフィールドを個別に削除する方法について説明します。 更新クエリを実行してデータを削除すると、指定した抽出条件に応じて、既存の値が NULL または長さ 0 の文字列 (間にスペースのない二重引用符のペア) に変わります。
-
[作成] タブの [クエリ] で [クエリ デザイン] をクリックします。
-
削除するデータが含まれているテーブル (テーブルが関連付けられている場合は、リレーションシップの "一" 側のテーブル) を選び、[追加] をクリックして、[閉じる] をクリックします。
クエリ デザインの上の部分に、テーブルがウィンドウとして表示されます。 このウィンドウには、選択したテーブルのすべてのフィールドが一覧表示されます。
-
アスタリスク (*) をダブルクリックして、テーブル内のすべてのフィールドをデザイン グリッドに追加します。 すべてのテーブル フィールドを追加すると、テーブルからレコード (行) 全体を削除する削除クエリが有効になります。
必要に応じて、デザイナーの [抽出条件] 行の 1 つ以上のフィールドに条件を入力し、各抽出条件フィールドの [表示] チェック ボックスをオフにすることもできます。 抽出条件の使用方法の詳細については、「選択クエリのサンプル抽出条件」テーブルをご覧ください。
注: 抽出条件を使って、変更するレコードだけが返されるようにします。 そうしないと、更新クエリにより、クエリの各フィールドのすべてのレコードが NULL に設定されます。
-
[デザイン] タブの [結果] グループで [表示] をクリックし、[データシート ビュー] をクリックします。
-
NULL または長さ 0 の文字列 (間にスペースのない二重引用符のペア "") に設定するレコードだけがクエリで返されることを確認します。
-
削除するデータだけがクエリで返されるまで、必要に応じて手順 3. ~ 5. を繰り返してから、Ctrl キーを押しながら S キーを押してクエリを保存します。
-
クエリを実行するには、ナビゲーション ウィンドウでクエリをダブルクリックします。
追加情報
リレーションシップを編集する
次の手順は、リレーションシップの "一" 側と "多" 側にあるデータを削除する場合のみ実行してください。
-
[データベース ツール] タブの [リレーションシップ] グループで [リレーションシップ] をクリックします。
-
削除に関係するテーブルを接続しているリレーションシップ (線) を右クリックし、ショートカット メニューの [リレーションシップの編集] をクリックします。
-
[リレーションシップ] ダイアログ ボックスで、[参照整合性] チェック ボックスがオンになっていることを確認します。
-
[レコードの連鎖削除] チェック ボックスをオンにします。
注: このプロパティを再び無効にするまでは、リレーションシップの "一" 側にあるレコードを削除すると、リレーションシップの "多" 側にあるすべての関連レコードが削除されます。
-
[OK] をクリックして [リレーションシップ] ウィンドウを閉じてから、次の手順に進みます。
リレーションシップを削除する
-
[リレーションシップ] ウィンドウを開いていない場合は、開きます。
-
[データベース ツール] タブの [リレーションシップ] グループで [リレーションシップ] をクリックします。
データを削除した後でリレーションシップを復元できるように、リレーションシップに関係するフィールドを書き留めます。
-
削除に関係するテーブルを接続しているリレーションシップ (線) を右クリックし、ショートカット メニューの [削除] をクリックします。
注: リレーションシップを復元するには、前述の手順に従って [リレーションシップ] ウィンドウを開き、"一" 側のテーブルの主キー フィールドを "多" 側のテーブルの外部キー フィールドまでドラッグ アンド ドロップします。 [リレーションシップ] ダイアログ ボックスが表示されます。 古いリレーションシップに参照整合性が適用されていた場合は、[参照整合性] をオンにしてから [作成] をクリックします。 そうでない場合は、[作成] をクリックします。
選択クエリのサンプル抽出条件
削除対象のデータのみ削除されることを確認したい場合に、選択クエリで使用できるサンプル抽出条件を次の表に示します。 一部の例ではワイルドカード文字を使います。
抽出条件 |
効果 |
---|---|
> 234 |
234 より大きいすべての数値を返します。 234 より小さいすべて数値を検索するには、<234 を使用します。 |
>= "Cajhen" |
アルファベット順で Cajhen 以降のすべてのレコードを返します。 |
Between #10/02/02# And #10/12/01# |
2010 年 2 月 2 日から 2010 年 12 月 1 日までの日付を返します (ANSI-89)。 データベースで ANSI-92 ワイルドカード文字が使用されている場合、シャープ記号 (#) の代わりに単一引用符 (') を使用します。 例: Between '10/02/02' And '10/12/01' |
Not "千葉県" |
フィールドの内容が "千葉県" と完全に一致しないすべてのレコードを検索します。 この抽出条件は、"千葉県" およびそれ以外の文字 ("千葉県 (関東)" や "関東 (千葉県)" など) が含まれるレコードも返します。 |
Not "タ*" |
先頭が "タ" 以外のすべてのレコードを検索します。データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。 |
Not "*ト" |
末尾の文字が "タ" でないすべてのレコードを検索します。 データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。 |
In(東京都,大阪府) |
リストから "東京都" または "大阪府" を含むすべてのレコードを検索します。 |
Like "[ア-サ]*" |
[テキスト] フィールドから、A から D で始まるレコードをすべて検索します。データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。 |
Like "*株式*" |
"株式" という文字シーケンスが含まれたすべてのレコードを検索します。 データベースで ANSI-92 ワイルドカード文字セットが使用されている場合は、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。 |
Like "株式会社?" |
先頭の 4 文字が "株式会社" でその後に任意の 1 文字が続く 5 文字のすべてのレコードを検索します。 データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、疑問符 (?) の代わりにアンダースコア (_) を使用します。 |
#10/02/02# |
2010 年 2 月 2 日のレコードをすべて検索します。 ANSI-92 ワイルドカード文字を使用するデータベースの場合は、データをシャープ記号ではなく引用符で囲みます ('10/02/02')。 |
< Date() - 30 |
Date 関数を使用して、30 日前よりも古いすべての日付を返します。 |
Date() |
Date 関数を使用して、今日の日付を含むすべてのレコードを返します。 |
Between Date() And DateAdd("M", 3, Date()) |
Date 関数と DateAdd 関数を使用して、今日の日付から 3 か月後までのすべてのレコードを返します。 |
Is Null |
Null 値 (空白または未定義の値) を含むすべてのレコードを返します。 |
Is Not Null |
任意の値 (NULL ではない値) が含まれるすべてのレコードを返します。 |
"" |
長さがゼロの文字列を含むレコードをすべて返します。 長さ 0 の文字列は、必須フィールドに値を追加する必要があるが、実際の値がわからない場合に使います。 たとえば、フィールドに FAX 番号を入力する必要があるのに、FAX を持っていない顧客がいる場合があります。 この場合、数値を入力する代わりに、間にスペースのない二重引用符のペア ("") を入力します。 |
トラブルシューティングのヒント
エラー メッセージが表示される原因と修正方法
複数のテーブルを使用する削除クエリを作成し、そのクエリの "固有のレコード" プロパティを [いいえ] に設定している場合、クエリの実行時に "指定されたテーブルから削除できませんでした。" というエラー メッセージが表示されます。
この問題を修正するには、クエリの "固有のレコード" プロパティを [はい] に設定します。
-
デザイン ビューで削除クエリを開きます。
-
クエリ プロパティ シートが開いていない場合は、F4 キーを押して開きます。
-
クエリ デザイナーをクリックして、フィールドのプロパティではなくクエリのプロパティを表示します。
-
クエリ プロパティ シートの [固有のレコード] ボックスを [はい] に設定します。
無効モードでクエリがブロックされないようにする
既定では、信頼していないデスクトップ データベースや信頼できる場所以外にあるデータベースを開くと、すべてのアクション クエリの実行がブロックされます。
アクション クエリを実行しようとしたのに、何も実行されていないように思われる場合は、Access ステータス バーに次のメッセージが表示されていないか確認してください。
無効モードのため、アクションまたはイベントはブロックされました。
このメッセージが表示された場合は、次の手順に従い、ブロックされたコンテンツを有効にします。
-
[セキュリティ警告] メッセージ バーの [コンテンツの有効化] をクリックして、クエリをもう一度実行します。