Microsoft Access Club >初心者講座 >CDアルバム管理ソフト >このページ >次頁 - 前項


クエリの作成と解説_1 : CDアルバム管理ソフト10-補



この後、下記のようなフォームを新規作成します。フォームのコマンドボタンからクエリを実行する仕組みですね。

マクロアクションの設置

各コマンドボタンの「クリック時」イベントに"クエリを開く"マクロを作成し配置します。

ここでテーブル作成クエリについて再度お話しますと、よくご存知の方は「普通は上記のような使い方をしないよ。」と思われるでしょう。

そうですね。実際の中規模のアプリでは、日次更新等を絡ませ「テーブル作成クエリ」を活用することでデータ入力とデータ表示とを区分しますね。

トランザクション

この区分も別テーブル同士で行いますから‥。これは、トランザクションの関係です。 脇道にそれたついでに、トランザクションのお話をしましょう。

  1. 業務のアプリ等ではこの初心者講座のようなデータ入力形式をとりません。

  2. 今回作成中のアプリは、データ入力即テーブルに格納されます。

  3. つまり全て新規入力だからです。

  4. しかし、業務アプリでは通常、データの入出庫関係で"在庫情報"の増減を行わなければなりません。

  5. しかも、広範囲にわたるネットワーク機能を利用していますから、流れの処理をきちんと系統立てて処理しなければ、商品がすでに無いのに出庫するということにもなりかねません。

  6. 例えば出庫作業を例にとると、入力する際に仮テーブルにデータを一時格納し、在庫情報テーブルに付き合わせ(更新前処理)、問題なければ本テーブルに追加クエリでデータ転送を行う。

  7. と、同時に在庫情報テーブルからデータ削除し、仮テーブルのデータ削除も行う。

  8. このような作業の流れになります。

  9. これをトランザクションと云います。え、後で取り消しする場合はどうするかって?上記の手順の逆を行います。この場合、伝票番号やID番号を伝票や帳票でプリントアウトしている筈ですから…。

削除クエリ

データの削除には、

  • 個別データの削除

  • 全データの削除

の2通りがあります。

個別データの削除

個別にデータを削除するためには、フォーム上で条件設定を行い、合致していれば削除を実行するシステムを組み込みます。では、フォームの作成からお話しま しよう。

サンプルでは、削除を行う条件として"タイトル名"を想定します。入力済みのタイトル名を選択するためには、コンボ ボックスまたはリストボックスを用いるのが常道です。これらは、機能的にはほぼ同じですから、お好きなのを使って下さい。

フォームに タブコントロール を用っています。複数の条件設定のときなどに切り替えできる便利なコントロールです。

コンボボックス利用サンプル

リストボックス利用サンプル

全データ削除サンプル

クエリ作成の実例は下記のとおりです。抽出条件にコンボボックス名である「選択」を指定しています。また、クエリフィールドの「レコードの削除」覧については、

  1. From は、削除する対象を指定します。

  2. Where は、削除条件の設定です。

これは、取り決めとなっていますのでマスターして下さい。

下記は、コンボボックスから該当のタイトル名を指定し、tbl_mainテーブルのデータを削除する削除クエリです。抽出条件に、コンボボックス名を指定しています。

下記は、リストボックスから該当のタイトル名を指定し、tbl_mainテーブルのデータを削除する削除クエリです。抽出条件に、リストボックス名を指定しています。

tbl_main.*フィールドは、tbl_mainテーブルの全フィールドを意味するものです。よって、全テーブルから全データを削除します。

データ削除の疑問点

ここで、皆さんある疑問が沸いてきませんか?「tbl_mainテーブルからはデータを削除できますが、tbl_subテーブルのデータは削除する必要がないのでしょうか? 」

回答は、tbl_mainテーブルのデータが削除されれば、リレーション設定の効用(レコードの連鎖削除の設定により)で自動的に「tbl_sub」テーブルのデータも削除される ということです。

 

リレーションの効用

リレーションの設定の際、下記のダイアログでチェック済みにされたこと、思い出してください。

この「レコードの連鎖削除」を設定しているからこそ、リレーションが設定されているテーブルのデータ削除ができるようになります。

逆に言いますと、リレーションの設定で「レコードの連鎖削除」のチェックを オフ にしている場合は、削除できず、下記のようなエラーメッセージが表示されます。

リレーションとデータの削除についてもう少しお話します。下記のリレーション関係図をご覧ください。

リレーション関係図
1
アーティストテーブル   曲名テーブル
浜崎 あゆみ Voyage
NEVER EVER
evolution
appears

丁度、1対多のリレーションが構築されています。CDアルバムの中で、アーティスト名に対して4曲の曲名が格納されているのが伺われますね。

データを削除して、これらリレーションの関係を清算するためには、「多」側のデータを削除した後、「1」側のデータを削除しなくてはいけません。

ここで、皆さんが誤って、「1」側の"浜崎 あゆみ"を削除してしまったら、このリレーション関係図はどうなるでしょう?「多」側の曲名テーブルに4曲の曲名だけが残り、対となっているアーティストが不在になります。

これでは、データベースとしては大きな欠陥を抱えたままになりますので、上記のエラーメッセージが表示され、データ削除できなくなっています。

しかし、サンプルでは「1」側のデータ(tbl_main)から削除しています。これが、「レコードの連鎖削除」の効用を利用したものです、と先ど申し上げましたが、リレーション間の整合性を保つために、この「レコードの連鎖削除」にチェックがある場合、1側のデータが削除されれば、自動的に多側のデータが削除されるんです。

 

紙面も少なくなってきたので、今日はこの辺で失礼します。集計クエリとクロス集計クエリは次回にお話します。 では、……!

 

ページの先頭へ 前ページへ戻る

 


クエリの作成と解説_1 : CDアルバム管理ソフト10-補


 

-Microsoft Access Club-