第6回 マスタ/詳細テーブルを扱うデータベース・アプリケーション:連載:Visual Studio 2005によるWindowsデータベース・プログラミング(1/4 ページ)
業務アプリには欠かせないマスタ/詳細情報をVisual Studioをフル活用して実装。参照のみならコーディングレス。
powered by Insider.NET
本連載ではVisual Basic 2005を活用したWindowsデータベース・アプリケーションのプログラミングについて解説を行っています。ここまで単一のテーブルのみを扱ってきましたが、今回そして次回では、一般に「マスタ/詳細テーブル」(あるいは親/子テーブル、Master/Detailテーブル)と呼ばれる、リレーションシップが設定された複数のテーブルを扱っていきます。
次の画面は今回で作成するサンプル・アプリケーションの実行時の画面です。画面の上部分では注文情報を、下部分でその注文に含まれる商品(注文明細情報)を表示しています。業務アプリケーションではおなじみの画面構成といえると思います。
それではさっそく、今回で使用するデータベースの準備から始めましょう。
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)自動設定されたリレーションシップ
ここでは分かりやすいように、データテーブルの名前を次の画面のように書き換えておきましょう。データテーブルの名前を変えると、自動的にテーブルアダプタの名前も変更されます。
ちなみにデータセットにおいてリレーションシップはDataRelationクラスのオブジェクトにより表されます。データテーブルのインスタンスがDataTableクラス(の派生クラス)のオブジェクトであることは第2回で説明しましたが、DataRelationオブジェクトは親データテーブルと子データテーブルへの参照をプロパティとして持っています。
さらにここではリレーションシップの部分をダブルクリックし、[リレーションシップ]ダイアログを開いて、「FK_Order_Details_Orders」となっているリレーションシップの名前を分かりやすい日本語の名前「注文/注文明細リレーション」に変更しておきます。
続いてはフォームのデザインを行います。
Copyright© Digital Advantage Corp. All Rights Reserved.