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

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

対象: このトピックの情報は、Excel 2013 と Excel 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

このチュートリアルでは、次の作業を行う方法について説明します。

  • ワークシートにコントロールを追加します。

  • ワークシートにキャッシュするデータセットを設定する。

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

  • プロジェクトのテスト

[!メモ]

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

-

Microsoft Office Developer Tools が含まれているエディションの Visual Studio 2012。詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.110\).md)」を参照してください。
  • Excel 2013 または 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. [My Master-Detail.xlsx] ブックが Visual Studio のデザイナーで開いていると、表示 [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.xlsx] を開きます。

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

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

次の手順

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

参照

概念

キャッシュされたデータ

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

その他の技術情報

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

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