|
||||||||||||||||||||||||
| 反復パネルを作るその前に 1 | |
| 「連結のオプション」でデータの整合性確保 |
| 反復パネルは、伝票形式の入力画面によく利用する、便利なフォームビューの一種です。 反復パネルは連結(リレーション)を利用していますが、 この連結は、ちょっと注意しないと、データの整合性が崩れてしまいます。 データの整合性が崩れたリレーショナルデータベースは、 便利どころか、混乱と余計な作業をもたらす、やっかいなしろものになってしまいます。 でも、これから説明する2つのポイントに注意すれば、 リレーショナルデータベースのデータの整合性を維持して、 便利に、快適に、アプローチを利用することができます。 |
| 1. サンプルに使う反復パネルは、よくあるパターンのこのようなものです。 |
| 2.この反復パネルの構成しているデータベースは、 下図のように連結しています。 |
| 3.さっそく1つ目のポイント、「連結のオプション」です。 では、「連結のオプション」の画面を開きます。 そのためには、まず、「販売」データベースの「伝票番号」と、 「販売明細」データベースの「伝票番号」を結んでいる線(連結ライン)を、 マウスでクリックします。 クリックすると下図のように、連結ラインが太く表示されます。 |
連結ラインの表示が太くなったら、画面右側の「トリガー」ボタンをクリックして、 「連結のオプション」画面を開きます。 なお、連結ラインをクリックして太い表示にしないと、「トリガー」ボタンは 利用できません。 |
| [ 余談 ] 「トリガー」ボタンをクリックして「連結のオプション」画面を開くというのは何か、おかしな感じがします。 「トリガー」ボタンをクリックして開くのは、「連結のオプション」画面だけですから、 ボタンの表示を「連結のオプション」に変更すべきだと思いますが...。 |
| 4.
「連結のオプション」画面を開くと、下図のように、「削除」にはチェックマークが 付いていません。 このままでは、「販売」データベースのあるレコードを削除しても、 そのレコードに連結している「販売明細」データベースのレコードは削除されずに 残ってしまいます。 いわば、伝票の上半分を破って捨て、下半分の明細部分は残こしておくような、 つじつまの合わない状態になってしまいます。 このようなことを避けるためには、 「連結のオプション」画面の上側の「削除」項目に チェックマークを付ける必要があります。 |
| 5.
それでは、ちょっと横道にそれて、「連結のオプション」の「挿入」 について説明をしましょう。 通常、連結を設定しただけの場合、「連結のオプション」は下図の設定に なっています。 この設定は、連結の多くのケースにふさわしい設定になっているので 自動的にこの設定になるのだと思います。 連結を反復パネルに利用する場合も、データの入力と修正に限れば、 この設定で反復パネルを利用できます。 |
| 試しに、上図の二つある「挿入」のチェックマークを両方とも消すと、 反復パネルには入力できなくなります。 次に、上の「挿入」だけにチェックマークを付けると、 反復パネルに入力できるようになります。 今度は、下の「挿入」だけにチェックマークを付けると、 反復パネルには入力できなくなります。 |
これらのことから、上の「挿入」の意味を解釈すると、 つぎのようになります。 「販売」データベースの連結フィールドに入力されたデータと同じものが 「販売明細」データベースの連結フィールドにない場合は、 「販売明細」データベースに新規レコードを追加する。 言い換えると、 「販売明細」データベースの連結フィールドにはないデータが 「販売」データベースの連結フィールドに入力されたら、 「販売明細」データベースに新規レコードを追加する、ということです。 それで、上の「挿入」にチェックマークを付けると、 反復パネルを使うことができます。 |
また、通常、反復パネルのフォームでは、 連結フィールドはメインのデータベースに入力するようにし、 明細側の連結フィールドは表示しませんので、反復パネルでは、 明細側の連結フィールドの入力・修正ができません。 (もし、明細側の連結フィールドも入力できるようにしたら、 データの整合性を崩しましょう、というのと同じで、 トラブルを起こす原因になります。) したがって、下の「挿入」のチェックマークの有無は、 反復パネルの動作には影響を与えません。 |
| 6.
話をもとに戻して、今度は「削除」の説明をしましょう。 「連結のオプション」画面の、上のほうの「削除」にチェックマークを付けると、 反復パネルのフォーム上で、メインデータベースの「販売」データベースの フィールドのどれかをクリックしてから、「レコード」−「削除」と クリックすれば、「販売」データベースのそのレコードと、それに連結して いる「販売明細」データベースのレコードを削除することができます。 つまり、上の「削除」にチェックマークを付ければ、 伝票の上半分を切って捨てても、下半分の明細部を残すようなことは 起きなくなります。 次に、下の「削除」ですが、これにチェックマークを付けても、 反復パネルでは、「連結のオプション」の説明のようには動作しません。 下の「削除」にチェックマークを付けて、 反復パネルの明細部のデータを削除しても、そのレコードが削除される だけで、メインデータベースのレコードは削除されません。 現実的には、このように動作してくれるほうが安全です。 明細データを削除したら、メインのデータも削除されるのでは、 危険すぎますから。 ということで、上下ふたつの「削除」にチェックマークを付け、 「OK」ボタンをクリックします。 |
| なお、このように設定すると、次のような欠点があるので注意が必要です。 「販売明細」データベースのレコードを表示するワークシートで、 「販売明細」データベースのレコードを削除すると、 それに連結している「販売」データベースのレコードも削除する。 この場合、「販売明細」と「販売」の各データベースの連結しているレコードが一つずつなら、 問題はないが、「販売明細」データベースのレコードが複数あると、削除したレコード以外は、 削除されず、残されたレコードは迷子レコードになってしまう。 この問題を避けるには、「連結のオブション」で、 「明細側のレコードを削除するとき、メイン側の一致するレコードを削除する」には チェックマークを付けない、 あるいは、明細データベースのレコードを表示するワークシートは作らない、 このいずれかの対策が必要です。 ( 2005.9.23 追加 ) |
そして「連結」画面の右上の「OK」ボタンをクリックします。 |
このように、「連結のオプション」画面で、「削除」にチェックマークを付けると、 データの削除により、データの整合性が崩れることを防ぐことができるように なります。 言い換えると、「連結のオプション」画面で「削除」にチェックマークを付けない まま、メインデータベースのレコードを削除すれば、それに連結していた明細データ ベースのレコードは反復パネルには表示されなくなるので、あたかも一緒に削除したの だと勘違いしがちです。ところが、明細データベースをレポートに印字したり、 ワークシートで見たりすると、削除したはずの明細データが、しっかり残っています。 このようにしてデータの整合性が崩れると、データ全体の信頼性が落ちてしまい、 そのデータを安心して使うことができなくなります。 もし、そうなったら、メインデータベースと明細データベースのデータを手作業で 照合しながら、データの追加・削除などのメンテナンス作業をしなくてはなりません。 ですので、反復パネルを作ったら、必ず、「連結のオプション」画面で、 「削除」にチェックマークを付けるようにしましょう。 このチェックマークを付けるだけで、どれだけムダな作業を減らせるか、 わかりません。それほど影響の大きい設定です。 そして、それは、データの信頼性を確保できるということでもあります。 |
| このページでは、データの整合性を保持するために、 反復パネルを作成したら、同時に、「連結のオプション」画面で「削除」に チェックマークを付ける重要さを説明しました。 次のページでは、データの整合性を保持するためには、 連結を設定する際の、連結フィールドの選択も重要であることを説明します。 |
|
||||
|
since May 20, 2002 :
更新日 :