連載
» 2007年10月09日 00時00分 公開

第6回 マスタ/詳細テーブルを扱うデータベース・アプリケーション連載:Visual Studio 2005によるWindowsデータベース・プログラミング(4/4 ページ)

[遠藤孝信,デジタルアドバンテージ]
前のページへ 1|2|3|4       

■社員名コンボボックスの設定

 Employee ID表示部分に関しても基本的にはいま行った作業の繰り返しですが、ここでは社員データテーブルで2つの列(FirstName列とLastName列)に分かれて格納されている値を合体させて、コンボボックスに表示させてみます。

 これはデータテーブルに「計算列」と呼ばれる列を追加し、その列の値をコンボボックスで表示することで可能になります。計算列とは、同じレコードのほかの列の値から計算して作り出した値を持った列です。

 まず、データセット・デザイナを開き、社員マスタ・データテーブルを右クリックし、メニューで[追加]−[列]を選択します。これにより新しい列がデータテーブルに追加されますので、ここでは「FullName」とでも列の名前を変えておきます。そして[プロパティ]ウィンドウから、このFullName列のExpressionプロパティに以下の文字列を設定します。

FirstName + ' ' + LastName

 これにより、FullName列にアクセスした場合には、これら2つの列の値を半角スペースで連結した値が取得できるようになります。このExpressionプロパティの記述方法についての詳細は、リファレンス・マニュアルのDataColumn.Expressionプロパティの項目をご覧ください。

 社員マスタ・データテーブルでデータのプレビューを行っても、次の画面のようにFullName列の値が正しく設定されているのが分かります。

図16 社員マスタ・データテーブルのプレビュー
このダイアログは、データセット・デザイナで社員マスタ・データテーブルを右クリックし[データのプレビュー]を実行すると開く。

 後は、ComboBoxタスクの「メンバの表示」設定欄で「FullName」を設定するようにすればOKです。設定手順は顧客名コンボボックスの場合と同様なので省略しますが、「(DataBindings)プロパティ」配下のTextプロパティで「なし」に設定しておくのを忘れないでください。

■商品名コンボボックスの設定

 最後に、注文明細情報を表示しているDataGridViewコントロールでコンボボックスにより商品名が表示されるようにします。

 ここではまず、DataGridViewコントロールの右上にある小さなボタンをクリックして「DataGridViewタスク」を開き、[列の追加]リンクをクリックします。これにより[列の追加]ダイアログが開きますので、[非バインド列]を選択し、名前、型、ヘッダーテキストを以下の画面のように設定します。

図17 列の追加
DataGridViewコントロールに商品名を表示するためのコンボボックスを追加する。   (1)DataGridViewコントロール右上にある小さなボタンをクリックする。
  (2)[列の追加]リンクをクリックする。
  (3)[非バインド列]を選択し、名前、型、ヘッダーテキストを設定する。

 [追加]ボタンをクリックすると、商品名を表示するためのコンボボックス列が追加されます。

 次にDataGridViewタスクで今度は[列の編集]リンクをクリックし、[列の編集]ダイアログを開きます。このダイアログでは、左側のリストでいま追加したProduct Name列を選択し、右側のプロパティ・シートで「データ」の設定を行います。

図18 列の編集
追加したコンボボックス列についてデータ連結の設定を行う。
ProductID列は不要となるのでここで右側のリストから削除しても構わない。

 右側のプロパティ・シートで設定する内容は次の表のとおりです。

設定欄 設定する値
DataPropertyName ProductID
DataSource [他のデータ ソース]−[プロジェクト データ ソース]−[NORTHWNDDataSet]−[商品マスタ]
DisplayMember ProductName
ValueMember ProductID
表 コンボボックス列に必要な設定内容

 DataPropertyNameプロパティが、DataGridViewコントロールで表示されている注文明細データテーブルのレコードとコンボボックスを関連付けるための項目となります。ここにはDataGridViewコントロールのデータソース(=注文明細BindingSource)に存在する列を指定します。このプロパティは、先ほどの顧客名コンボボックスのときに設定したSelectedValueプロパティに相当すると考えてよいでしょう。


 今回は設定が少し複雑だったので、作成したVisual Basic 2005のプロジェクトを用意しました。以下のリンクからダウンロードできます。

今回作成したサンプル・プログラムのダウンロード(vsdbprog_06.zip)

 なお、このzipファイルにはNorthwindデータベースが含まれていません。実際に実行して試す場合には、上記zipファイルを展開すると作成されるvsdbprog_06ディレクトリにサンプル・データベースの「NORTHWND.MDF」と「NORTHWND.LDF」をコピーし、さらにNORTHWND.LDFの名前を「NORTHWND_log.ldf」に変更してからビルドしてください。

 今回はマスタ/詳細テーブルを扱うデータベース・アプリケーションについて参照処理をまず作成しました。次回は更新処理を実装していきます。

「連載:Visual Studio 2005によるWindowsデータベース・プログラミング」のインデックス

連載:Visual Studio 2005によるWindowsデータベース・プログラミング

前のページへ 1|2|3|4       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。