チュートリアル : キャッシュされたデータセットを使用したマスター/詳細関係の作成
このチュートリアルでは、ワークシート上でのマスター/詳細リレーションシップの作成、およびソリューションをオフラインで使用することを目的とするデータのキャッシュについて説明します。
対象: このトピックの情報は、Excel 2007 と Excel 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
このチュートリアルでは、次の作業を行う方法について説明します。
ワークシートにコントロールを追加する。
ワークシートにキャッシュするデータセットを設定する。
レコード間をスクロールするためのコードを追加する。
プロジェクトをテストする。
注意
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。 詳細については、「設定の操作」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office 開発者ツールを含むエディションの Visual Studio 2010。 詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.100\).md)」を参照してください。
Microsoft Office Excel 2007 または Excel 2010
Northwind SQL Server サンプル データベースへのアクセス。 このデータベースは開発用コンピューターまたはサーバーにあります。
SQL Server データベースの読み込み/書き込みアクセス許可
新規プロジェクトの作成
この手順では、Excel ブックのプロジェクトを作成します。
新しいプロジェクトを作成するには
- Visual Basic または C# を使用して、My Master-Detail という名前の Excel ブック プロジェクトを作成します。 [新規ドキュメントの作成] が選択されていることを確認します。 詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。
新しい Excel ブックがデザイナーで開き、My Master-Detail プロジェクトがソリューション エクスプローラーに追加されます。
データ ソースの作成
[データ ソース] ウィンドウを使用して、型指定されたデータセットをプロジェクトに追加します。
データ ソースを作成するには
[データ ソース] ウィンドウが表示されていない場合は、[データ] メニューの [データ ソースの表示] をクリックします。
[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。
[データベース] をクリックし、[次へ] をクリックします。
SQL Server Northwind サンプル データベースへのデータ接続を選択するか、または [新しい接続] をクリックして新しい接続を追加します。
接続を選択または作成したら、[次へ] をクリックします。
接続を保存するオプションがオンになっている場合はオフにし、[次へ] をクリックします。
[データベース オブジェクト] ウィンドウの [テーブル] ノードを展開します。
[Orders] テーブルと [Order Details] テーブルを選択します。
[完了] をクリックします。
[データ ソース] ウィンドウに 2 つのテーブルが追加されます。 さらに、ソリューション エクスプローラーに表示されるプロジェクトに、型指定されたデータセットも追加されます。
ワークシートへのコントロールの追加
この手順では、1 番目のワークシートに、名前付き範囲、リスト オブジェクト、および 2 つのボタンを追加します。 最初に、自動的にデータ ソースにバインドされるように、[データ ソース] ウィンドウから名前付き範囲とリスト オブジェクトを追加します。 次に、ツールボックスからボタンを追加します。
名前付き範囲とリスト オブジェクトを追加するには
Visual Studio デザイナーで My Master-Detail.xls ブックが開いていて、Sheet1 が表示されていることを確認します。
[データ ソース] ウィンドウを表示し、[Orders] ノードを展開します。
[OrderID] 列を選択し、表示されるドロップダウン矢印をクリックします。
ドロップダウン リストの [NamedRange] をクリックし、[OrderID] 列をセル A2 にドラッグします。
OrderIDNamedRange という名前の NamedRange コントロールがセル A2 に作成されます。 同時に、OrdersBindingSource という名前の BindingSource、テーブル アダプター、および DataSet のインスタンスがプロジェクトに追加されます。 コントロールは BindingSource にバインドされ、さらにこれが DataSet インスタンスにバインドされます。
[Orders] テーブルの下にある列をスクロール ダウンします。 リストの一番下には、Orders テーブルの子である Order Details テーブルがあります。 Orders テーブルと同じレベルにあるテーブルではなく、この [Order Details] テーブルを選択し、表示されるドロップダウン矢印をクリックします。
ドロップダウン リストの [ListObject] をクリックし、[Order Details] テーブルをセル A6 にドラッグします。
Order_DetailsListObject という名前の ListObject コントロールがセル A6 に作成され、BindingSource にバインドされます。
2 つのボタンを追加するには
ツールボックスの [コモン コントロール] タブからワークシートのセル A3 へ、Button コントロールをドラッグします。
このボタンの名前は Button1 です。
別の Button コントロールを、ワークシートのセル B3 に追加します。
このボタンの名前は Button2 です。
次に、文書にキャッシュされるデータセットをマーキングします。
データセットのキャッシュ
データセットをパブリックにし、CacheInDocument プロパティを設定することによって、文書にキャッシュするデータセットをマーキングします。
データセットをキャッシュするには
コンポーネント トレイの [NorthwindDataSet] を選択します。
[プロパティ] ウィンドウで、Modifiers プロパティを Public に設定します。
キャッシュを有効にする前に、データセットをパブリックにする必要があります。
CacheInDocument プロパティを True に変更します。
次の手順では、ボタンにテキストを追加し、C# でイベント ハンドラーをフックするコードを追加します。
コントロールの初期化
ボタンのテキストを設定し、Startup イベント時のイベント ハンドラーを追加します。
データとコントロールを初期化するには
ソリューション エクスプローラーで、Sheet1.vb または Sheet1.cs を右クリックし、ショートカット メニューの [コードの表示] をクリックします。
Sheet1_Startup メソッドに次のコードを追加して、ボタンのテキストを設定します。
Me.Button1.Text = "<" Me.Button2.Text = ">"
this.button1.Text = "<"; this.button2.Text = ">";
C# の場合のみ、ボタン クリック イベントのイベント ハンドラーを Sheet1_Startup メソッドに追加します。
this.button1.Click += new EventHandler(button1_Click); this.button2.Click += new EventHandler(button2_Click);
レコード間をスクロールするためのコードの追加
レコード間を移動するには、各ボタンの Click イベントにコードを追加します。
レコード間をスクロールするには
Button1 の Click イベントのイベント ハンドラーを追加し、レコード間を後方に移動できるように次のコードを追加します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Me.OrdersBindingSource.MovePrevious() End Sub
private void button1_Click(object sender, EventArgs e) { this.ordersBindingSource.MovePrevious(); }
Button2 の Click イベントのイベント ハンドラーを追加し、レコード間を前方に移動できるように次のコードを追加します。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button2.Click Me.OrdersBindingSource.MoveNext() End Sub
private void button2_Click(object sender, EventArgs e) { this.ordersBindingSource.MoveNext(); }
アプリケーションのテスト
ブックをテストして、データが期待どおりに表示され、ソリューションをオフラインで使用できることを確認します。
データ キャッシュをテストするには
F5 キーを押します。
名前付き範囲とリスト オブジェクトに、データ ソースのデータが設定されていることを確認します。
ボタンをクリックして、いくつかのレコードをスクロールします。
ブックを保存し、ブックと Visual Studio を閉じます。
データベースへの接続を無効にします。 データベースがサーバー上にある場合はコンピューターからネットワーク ケーブルを外します。また、データベースが開発用コンピューター上にある場合は SQL Server サービスを停止します。
Excel を起動し、\bin ディレクトリ (Visual Basic の場合は \My Master-Detail\bin、または C# の場合は \My Master-Detail\bin\debug) から My Master-Detail.xls を開きます。
いくつかのレコードをスクロールして、接続していない状態で、ワークシートが正常に動作することを確認します。
データベースに再接続します。 データベースがサーバー上にある場合はコンピューターをネットワークに再接続します。また、データベースが開発用コンピューター上にある場合は SQL Server サービスを開始します。
次の手順
このチュートリアルでは、ワークシート上でのマスター/詳細リレーションシップの作成、およびデータセットのキャッシュの基本事項について説明します。 ここでは、次の作業を行います。
ソリューションの配置。 詳細については、「Deploying Office Solutions」を参照してください。
別のプロジェクト用のキャッシュからのデータの取得。 詳細については、「方法 : サーバー上のブックからキャッシュされたデータを取得する」を参照してください。
参照
概念
Office ソリューションでのコントロールへのデータのバインド