1. データベースの定義
OpenOffice Base で、以下のようなデータベースを作成したい。
保育園で、来年のクラス編成を考えている。クラスには、
- 「ほし」
- 「うめ」
- 「まつ」
の 3 つがある。園児をクラスに割り振りたい。
テーブルの定義
「クラス」テーブルを定義した。
- id : クラスを識別するための識別子。(主キー)
- 名前 : クラスの名前
「園児」テーブルを定義した。
- id : 園児を識別するための識別子 (主キー)
- 名前 : 園児の名前
- クラス_id : 園児が所属するクラスを示す識別子 (外部キー)
両テーブルとも、id はシステムが自動的につける。(後で作成するフォームでは、このフィールドをユーザが操作できないようにする。)
リレーションシップの設定
メインウィンドウのメニュー、 ツール > リレーションシップ で、園児の クラス_id とクラスの id との間に 参照整合性を設定する。
2. セレクトボックスで表示するリストのためのクエリーを作成
「クラス」テーブルからクエリーを作成する。「名前」「id」の順に列を設定する。
「名前」が先頭に来ていることに注意。
上記のクエリーを「クエリークラス」という名前で保存。
3. 入力フォームを作成
ウィザードを使用して、それぞれのテーブルに対してフォームを作成する。
「クラス」のフォームが作成できたら、「ほし」「うめ」「まつ」のクラスを入力する。
「園児」から、ウィザードを使用して作成したのが以下のフォーム。
「クラス_id」 の列をリストボックスに変更する。(デザインモードにおいて、「クラス_id」 の列で、右クリック > 置き換え > リストボックス を選択。)
「クラス_id」の列の属性を表示させる。(「クラス_id」を右クリック > 列... を選択。)
「データ」タブを表示する。
- リスト内容の種類を「クエリー」にする。
- リストの内容を、先ほど作成した「クエリークラス」にする。
- 関連のあるフィールドが 「1」 であるのを確認する。
列の名前を「クラス」にする。(「全般」タブのタイトルで変更。)
クラスの入力において、リストを選択できるようになった。
4. 表示するリストを変更する
50音順
リストで表示される内容を 50音順で表示されるようにしたい。(ただし、クラス名は、ひらがなしか入力されてないとする。)
- クエリークラスにおいて、「名前」の列の「並べ替え」を「昇順」にする。
リストの順序をユーザが設定
クラス名のリストの順番を、ユーザが自由に設定、変更できるようにしたい。
- 「クラス」テーブルに、「順番」という列を「整数」型として追加する。
- 「クエリークラス」の最後の列に、上記の「順番」の列を追加し、「並べ替え」を昇順にする。
- 後は、「クラス」のフォームに「順番」の列を追加し、自分で値を設定する。
5. まとめ
A テーブルが B テーブルを参照しているとする。
- A テーブルのフォームにおいて、リストで表示する元になるクエリを作成する。
- リストに表示したい属性を 1 列目、B テーブルのレコードを一意に決定する列を 2 列目に持ったクエリーを作成する。
- A テーブルのフォームにおいて、B テーブルを参照する値を入力するコントロールを、リストボックスにする。
- リストボックスの属性 > データ において...
- リストの内容の種類を「クエリ」にする。
- リストの内容を、上記で作成したクエリを指定する。
- 関連のあるフィールドを、1 にする。( B テーブルを一意に決定する列を指している。)
0コメント:
コメントを投稿