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

業務アプリには欠かせないマスタ/詳細情報をVisual Studioをフル活用して実装。参照のみならコーディングレス。

» 2007年10月09日 00時00分 公開
[遠藤孝信デジタルアドバンテージ]
連載:Visual Studio 2005によるWindowsデータベース・プログラミング
業務アプリInsider/Insider.NET

powered by Insider.NET

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

連載目次

 本連載ではVisual Basic 2005を活用したWindowsデータベース・アプリケーションのプログラミングについて解説を行っています。ここまで単一のテーブルのみを扱ってきましたが、今回そして次回では、一般に「マスタ/詳細テーブル」(あるいは親/子テーブル、Master/Detailテーブル)と呼ばれる、リレーションシップが設定された複数のテーブルを扱っていきます。

 次の画面は今回で作成するサンプル・アプリケーションの実行時の画面です。画面の上部分では注文情報を、下部分でその注文に含まれる商品(注文明細情報)を表示しています。業務アプリケーションではおなじみの画面構成といえると思います。

図1 今回作成するサンプル・アプリケーション

 それではさっそく、今回で使用するデータベースの準備から始めましょう。

Northwindデータベースの準備

 前回では「Northwind and pubs Sample Databases for SQL Server 2000」に含まれる2つのサンプル・データベースのうち、「Pubs」データベースをアプリケーションで使用しました。今回はもう一方の「Northwind」データベースを使用します。

 このNorthwindデータベースは、食料品の輸出入を専門に行う「Northwind Traders」という架空の会社の販売管理データベースです。これには以下のマスタ/詳細の関係を持ったテーブルが含まれています。

  • Ordersテーブル(以下、注文テーブル)
  • Order Detailsテーブル(以下、注文明細テーブル)

 ここで、注文テーブルの1つのレコードは1つの注文を表しています。その注文に含まれる商品やその数量などは、注文詳細テーブルのレコードとして格納されています。例えばある顧客から5種類の商品の注文を受けた場合には、1つの注文テーブルのレコードと、それに関連した5つの注文明細テーブルのレコードが作成されることになります。

 最初に、前回で解説した手順により、NORTHWND.MDFを新しく作成したWindowsアプリケーションのプロジェクトに追加します。そしてデータセット内には上記2つのテーブルをセットします。

 なお前回では書き漏れていましたが、ソリューション・エクスプローラのプロジェクト名部分にWindowsのエクスプローラからNORTHWND.MDFを直接ドラッグ&ドロップしても、プロジェクトに追加することができます。

リレーションシップの確認

 データセット・デザイナを開くと次のように2つのデータテーブルが追加されており、かつ、データテーブル間にリレーションシップが設定されているのを確認できます。もちろんこれは実際のデータベースにおけるリレーションシップの設定が自動的に反映された結果です。

図2 データセットに追加された2つのデータテーブルとリレーションシップ
Order DetailsテーブルではOrderID列とProductID列の2つの組み合わせが主キーとなっている(これらの2つの列の値の組み合わせでレコードが一意に決まる)。また、OrderID列は外部キーであり、その注文明細がどの注文に属するかを示している。
  (1)自動設定されたリレーションシップ

 ここでは分かりやすいように、データテーブルの名前を次の画面のように書き換えておきましょう。データテーブルの名前を変えると、自動的にテーブルアダプタの名前も変更されます。

図3 名前を変更した2つのデータテーブル
各データテーブルの先頭部分をクリックして名前を変更する。データテーブルの下部にくっついているテーブルアダプタの名前も自動的に変更される。

 ちなみにデータセットにおいてリレーションシップはDataRelationクラスのオブジェクトにより表されます。データテーブルのインスタンスがDataTableクラス(の派生クラス)のオブジェクトであることは第2回で説明しましたが、DataRelationオブジェクトは親データテーブルと子データテーブルへの参照をプロパティとして持っています。

 さらにここではリレーションシップの部分をダブルクリックし、[リレーションシップ]ダイアログを開いて、「FK_Order_Details_Orders」となっているリレーションシップの名前を分かりやすい日本語の名前「注文/注文明細リレーション」に変更しておきます。

図4 [リレーションシップ]ダイアログ
リレーションシップについて設定が行える。ここでは取りあえず名前のみを変更した。

 続いてはフォームのデザインを行います。

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

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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