チュートリアル : キャッシュされたデータセットを使用したマスター/詳細関係の作成

このチュートリアルでは、ワークシート上でのマスター/詳細リレーションシップの作成、およびソリューションをオフラインで使用することを目的とするデータのキャッシュについて説明します。

対象: このトピックの情報は、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 プロジェクトがソリューション エクスプローラーに追加されます。

データ ソースの作成

[データ ソース] ウィンドウを使用して、型指定されたデータセットをプロジェクトに追加します。

データ ソースを作成するには

  1. [データ ソース] ウィンドウが表示されていない場合は、[データ] メニューの [データ ソースの表示] をクリックします。

  2. [新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。

  3. [データベース] をクリックし、[次へ] をクリックします。

  4. SQL Server Northwind サンプル データベースへのデータ接続を選択するか、または [新しい接続] をクリックして新しい接続を追加します。

  5. 接続を選択または作成したら、[次へ] をクリックします。

  6. 接続を保存するオプションがオンになっている場合はオフにし、[次へ] をクリックします。

  7. [データベース オブジェクト] ウィンドウの [テーブル] ノードを展開します。

  8. [Orders] テーブルと [Order Details] テーブルを選択します。

  9. [完了] をクリックします。

[データ ソース] ウィンドウに 2 つのテーブルが追加されます。 さらに、ソリューション エクスプローラーに表示されるプロジェクトに、型指定されたデータセットも追加されます。

ワークシートへのコントロールの追加

この手順では、1 番目のワークシートに、名前付き範囲、リスト オブジェクト、および 2 つのボタンを追加します。 最初に、自動的にデータ ソースにバインドされるように、[データ ソース] ウィンドウから名前付き範囲とリスト オブジェクトを追加します。 次に、ツールボックスからボタンを追加します。

名前付き範囲とリスト オブジェクトを追加するには

  1. Visual Studio デザイナーで My Master-Detail.xls ブックが開いていて、Sheet1 が表示されていることを確認します。

  2. [データ ソース] ウィンドウを表示し、[Orders] ノードを展開します。

  3. [OrderID] 列を選択し、表示されるドロップダウン矢印をクリックします。

  4. ドロップダウン リストの [NamedRange] をクリックし、[OrderID] 列をセル A2 にドラッグします。

    OrderIDNamedRange という名前の NamedRange コントロールがセル A2 に作成されます。 同時に、OrdersBindingSource という名前の BindingSource、テーブル アダプター、および DataSet のインスタンスがプロジェクトに追加されます。 コントロールは BindingSource にバインドされ、さらにこれが DataSet インスタンスにバインドされます。

  5. [Orders] テーブルの下にある列をスクロール ダウンします。 リストの一番下には、Orders テーブルの子である Order Details テーブルがあります。 Orders テーブルと同じレベルにあるテーブルではなく、この [Order Details] テーブルを選択し、表示されるドロップダウン矢印をクリックします。

  6. ドロップダウン リストの [ListObject] をクリックし、[Order Details] テーブルをセル A6 にドラッグします。

  7. Order_DetailsListObject という名前の ListObject コントロールがセル A6 に作成され、BindingSource にバインドされます。

2 つのボタンを追加するには

  1. ツールボックス[コモン コントロール] タブからワークシートのセル A3 へ、Button コントロールをドラッグします。

    このボタンの名前は Button1 です。

  2. 別の Button コントロールを、ワークシートのセル B3 に追加します。

    このボタンの名前は Button2 です。

次に、文書にキャッシュされるデータセットをマーキングします。

データセットのキャッシュ

データセットをパブリックにし、CacheInDocument プロパティを設定することによって、文書にキャッシュするデータセットをマーキングします。

データセットをキャッシュするには

  1. コンポーネント トレイの [NorthwindDataSet] を選択します。

  2. [プロパティ] ウィンドウで、Modifiers プロパティを Public に設定します。

    キャッシュを有効にする前に、データセットをパブリックにする必要があります。

  3. CacheInDocument プロパティを True に変更します。

次の手順では、ボタンにテキストを追加し、C# でイベント ハンドラーをフックするコードを追加します。

コントロールの初期化

ボタンのテキストを設定し、Startup イベント時のイベント ハンドラーを追加します。

データとコントロールを初期化するには

  1. ソリューション エクスプローラーで、Sheet1.vb または Sheet1.cs を右クリックし、ショートカット メニューの [コードの表示] をクリックします。

  2. Sheet1_Startup メソッドに次のコードを追加して、ボタンのテキストを設定します。

    Me.Button1.Text = "<"
    Me.Button2.Text = ">"
    
    this.button1.Text = "<";
    this.button2.Text = ">";
    
  3. C# の場合のみ、ボタン クリック イベントのイベント ハンドラーを Sheet1_Startup メソッドに追加します。

    this.button1.Click += new EventHandler(button1_Click);
    this.button2.Click += new EventHandler(button2_Click);
    

レコード間をスクロールするためのコードの追加

レコード間を移動するには、各ボタンの Click イベントにコードを追加します。

レコード間をスクロールするには

  1. 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();
    }
    
  2. 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();
    }
    

アプリケーションのテスト

ブックをテストして、データが期待どおりに表示され、ソリューションをオフラインで使用できることを確認します。

データ キャッシュをテストするには

  1. F5 キーを押します。

  2. 名前付き範囲とリスト オブジェクトに、データ ソースのデータが設定されていることを確認します。

  3. ボタンをクリックして、いくつかのレコードをスクロールします。

  4. ブックを保存し、ブックと Visual Studio を閉じます。

  5. データベースへの接続を無効にします。 データベースがサーバー上にある場合はコンピューターからネットワーク ケーブルを外します。また、データベースが開発用コンピューター上にある場合は SQL Server サービスを停止します。

  6. Excel を起動し、\bin ディレクトリ (Visual Basic の場合は \My Master-Detail\bin、または C# の場合は \My Master-Detail\bin\debug) から My Master-Detail.xls を開きます。

  7. いくつかのレコードをスクロールして、接続していない状態で、ワークシートが正常に動作することを確認します。

  8. データベースに再接続します。 データベースがサーバー上にある場合はコンピューターをネットワークに再接続します。また、データベースが開発用コンピューター上にある場合は SQL Server サービスを開始します。

次の手順

このチュートリアルでは、ワークシート上でのマスター/詳細リレーションシップの作成、およびデータセットのキャッシュの基本事項について説明します。 ここでは、次の作業を行います。

参照

概念

Office ソリューションでのコントロールへのデータのバインド

キャッシュされたデータ

ホスト項目とホスト コントロールの概要

その他の技術情報

Office ソリューションにおけるデータ