IoTの格納先を考える(8)メインテナンス・プログラムの作成
■データベースをメインテナンスするプログラムを作る
前回はWindowsフォームにdatagridviewを張り付け、プログラムをコーディングすることなくSQLServer上のデータベースをメインテナンスするプログラムを作りました。
今回はレコードごとに表示し、作曲者名を指定するとコードがテーブルにセットされる方法を検討します。
●新しいプロジェクトの作成
これからのアプリケーションはUWPで作ることが推奨されていますが、SQLServerとの連携がまだ十分でないので、次に示すように、Windowsクラシック・デスクトップのWindowsフォーム・アプリケーションを選択します。
テンプレートの選択、プロジェクト名の設定を行い「OK」ボタンをクリックして次に進みます。フォームのデザイナが起動してデザイナのペインにフォームが表示されます。
●データベースの接続
テンプレートが表示されたら、次はデータベースの接続を行います。メニューバーの、
ツール > データベースの接続 |
を選択すると、次に示す「接続の追加」の画面が表示されます。
データソースは、デフォルトのMicrosoft SQL Server(SQLClient)のままにして、サーバ名はサーバが格納されているPCがYASUM2でSQL Server EXPRESSなので、
YASUM2\SQLEXPRESS |
と設定します。
この設定を行うと、「データベース名の選択または入力(D)」にサーバ上のデータベースの一覧が表示されます。
その中から「音楽映画TV所蔵データ」を選択します。
「OK」ボタンをクリックしてデータベースの接続を終えると、次はデータソースの追加を行います。
次に示すように、データソースのペインに「新しいデータソースの追加...」が表示されます。
●データソースの追加
データソースの追加をクリックすると、次に示す「データソースの構成ウィザード」が起動します。ここではデータソースの選択を行います。データソースとしてデータベースを選択します。
データベース モデルとしてデータセットを選択します。
次は、アプリケーションに接続するデータベースがyasum2\sqlexpress.音楽映画TV所蔵データ.dboとなっていることを確認し、次に進みます。
接続文字列を保存して次に進みます。
次は、データベースのどのオブジェクトを利用するかの選択画面となります。
今回はテーブルのメインテナンスを行うので、テーブルを選択します。テーブルをチェックすると、次に示すように全テーブルが選択されます。ビューは今回選択しましたが、利用していません。
完了ボタンをクリックして「データ構成ウィザード」を閉じると、次に示すようにデータソースのペインに利用できるテーブルが一覧表示されます。
メディアテーブルを展開し、フィールドごとにフォームにドラッグします。
以上で、メディアテーブルについては、レコードごとの表示、更新、追加などができるようになります。
●作者名、劇場名などでレコードの編集ができるようにする
メディアテーブルにはコードで作者(作曲家)を入力するために、アーティストテーブルで作者名を表示し該当する作者を選択すると、メディアテーブルの作者のフィールドには該当する作者のコードがセットされるようにします。
そのために、ツールボックスのコモンコントロールから、ComboBoxを作者と劇場団体名用にドラッグします。見出しの作者、劇場団体名はlabelのコントロールをそれぞれドラッグして、それぞれのプロパティのテキストを見出しの文字に変更します。
ComboBoxのコントロールをマウスで選択すると、次に示すようにComboBoxの右上に右向きの三角のマークが現れます。
この三角マークをクリックすると、次に示すように使用法を設定するダイアログボックスが表示されます。
SQLServerのデータベースを利用するために、「データバインド項目を使用する」にチェックを入れると、
①アーティストテーブルを指定するデータソース
②ComboBoxに表示する項目を設定する表示メンバー
③選択されるコードを指定する値メンバー
④選択された値
を設定するフィールドを指定する項目の一覧が表示されます。
データソースにセットできる項目をリストで表示すると、次のようになります。作者(作曲家)名が格納されているのはアーティストテーブルなので、アーティストテーブルを選択します。
選択されたアーティストテーブルがデータソースの欄に表示されます。
表示メンバーに設定できるのは、次に示すようにアーティストテーブルの各項目です。ComboBoxでリスト表示するのはアーティスト名ですので、アーティスト名を選択します。
ComboBoxで取り出すのはアーテイストコードですので、値メンバーとしてアーテイストコードを設定します。
選択されたアーティスト・コードはメディアテーブルの作者の欄にセットします。そのために、メディアテーブルの作者をセットします。
必要な項目がセットされると次のようになります。
劇場団体名のComboBoxについても同様に団体劇場テーブルを選択し、表示メンバーとして団体名、値メンバーを団体コード、選択された値にはメディアテーブルの劇場コードをセットします。
Visual Studioのツールバーの開始をクリックし、テストを開始します。プログラムが起動すると、次に示すようにメディアテーブルの最初のレコードが表示されます。プラスのアイコンで新規のレコードの追加、×は削除、フロッピは保存となります。
作者のComboBoxのリストを表示すると、表示されている作者リヒャルト・ワーグナーを先頭に表示されます。
劇場団体名のComboBoxでリストのデータ数が少なく、リスト全体が表示されています。キャプチャしたときにバイロイト劇場の表示されている部分はカットされてしまいました。
●新しいレコードを追加する
プラスのアイコンをクリックすると、次のように新しいレコードを追加できるようになります。デフォルトの設定で日付は、現在の日付になっていました。
主キーとなるメディアコード、タイトル、公演日を入力し、ソースはNHKのプレミアムシアタの録画だったので、NHKと設定しました。作者はリストからヘンデルを設定しました。
劇場団体名はエクサンプロバンス音楽祭の公演だったので、リストからこの項目を選択しました。この段階では、まだメディアテーブルの作者コード、劇場コードは入力されていません。
●テーブルの更新
テーブルにデータを入力するためには、更新が必要です。更新のアイコン(フロッピ)をクリックすると、次のようにメディアテーブルに各コードもセットされ表示されます。
これで、コードでなくそれぞれわかりやすい名称を選択するだけで入力できるようになりました。しかもプログラムのコーディングをすることなく、Visual Studioでメンテナンスのプログラムを作ることができました。
ただし、リストの並び方がわかりやすくありません。これらについて検討を進めながらコードの確認も始めなければと考えています。
(2017/8/13 V1.0)
<神崎康宏>