IoTの格納先を考える(9)メインテナンス・プログラムの作成 その2
■ComboBoxの表示データ
前回は、レコードごとに表示し、作曲者名を指定するとコードがテーブルにセットされるメインテナンス・プログラムを作りました。
今回は、作者のComboBoxのリストにはアーティストテーブルの中の作曲家のみを「あいうえお順に表示する」方法を検討します。
データベースに接続し、プロジェクトを作成し、データセット追加し、フォームにメディアテーブルの各項目をドラッグします。その下に作者と劇場を入力するためのComboBoxをツールボックスからドラッグします。
ComboBoxの見出しはラベルのコントロールを作ります。作者はlabel1、劇場はlabel2を割り当てます。
●見出しの設定
コントロールのLabel1を選択すると、プロパティのペインにlabel1のプロパティが表示されます。Textのプロパティ欄に作者とセットします。次に示すように、label2のTextプロパティには劇場をセットします。
●ComboBoxの設定
ComboBoxのコントロールを選択し、三角のマークをクリックして次のようにコントロールの設定のダイアログボックスを表示し「データバインド項目を使用する」をチェックすると、バインドするデータを設定できるようになります。
ComboBoxに設定する値を求めるために、次の項目が選定できるようになります。
① データソース 表示するデータが格納されているテーブルを設定する ② 表示項目 ComboBoxに表示する項目を設定する。この場合作曲家の設定されている項目となる ③ 値メンバー 選択される表示項目に対応する値メンバーが④に格納される。この場合、アーティストコードが値メンバーとなり、メディアテーブルの作者にセットされる ④ 選択された値 選択された値を格納する項目を設定する。この場合メディアテーブルの作者となる |
●データソースの設定
データソースの設定は次のようにして行います。データソースの入力欄の右の四角いボタンをクリックすると、利用できるデータベースのテーブルが表示されます。テーブルまで展開されていない場合、展開し該当するテーブルを選択します。
メディアテーブルがBindingSourceとして表示されています。今回はアーティストテーブルを利用する予定ですから、ほかのデータソースを展開します。
ここではアーティストテーブルを選択します。
アーティストテーブルには、作曲家以外の指揮者、ソプラノ、テノールなどの歌手も含まれています。ComboBoxのリストに表示するのは作曲家のみにして、見やすくしています。そのためにSQLで作曲家のみ選択、表示をあいうえお順にします。具体的には、「クエリの追加」を選択します。アーティストテーブルに対するクエリはこの時点で作成します。
クエリ テキストには、アーティストテーブルからすべての項目とレコードを取り出す指定となっています。
クエリビルダを利用します。クエリビルダをクリックして起動し、アーティスト名の順番に、作曲家のみ表示するように設定します。
「クエリの実行」のボタンをクリックすると、クエリの実行結果を確認できます。
次に示すように、作曲家のみが名前順に表示されています。
「OK」ボタンをクリックして次に進みます。次に示すように、クエリのテキストが表示されます。WHERE (カテゴリ=N‘作曲家’)で作曲家のみ表示し、ORDER BY アーティスト名で名前順に表示されます。
クエリの名前がFillByとなっています。この名前を、次に示すようにCOMPOSERに変更しました。
作成されたクエリ composerを起動するアイコンがフォームの左上にセットされました。
表示名にはアーティスト名、値メンバーはアーティストコードをセットします。
選択された値(アーティストコード)をメディアテーブルの作者欄にセットするのが目的なので、次に示すようにメディアテーブルの作者をセットします。
以上の設定を済ませ、「開始アイコン」をクリックして動作テストを行うと、次に示すようになります。クエリcomposerのアイコンをクリックしてアーティストテーブルから作曲家のみ選択し、名前順に並べ替え表示します。
ComboBoxでリスト表示した作者のリストは作曲家のみで、名前順になっていて期待通りでした。
今回も、コーディングすることなく設定を順番に選択するだけでフォームを完成させることができました。
(2017/8/28 V1.0)
<神崎康宏>