次の方法で共有


チュートリアル : アプリケーション レベルのプロジェクトでの単純データ バインディング

更新 : 2008 年 7 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Word 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Visual Studio 2008 Service Pack 1 (SP1) 以降、アプリケーション レベルのプロジェクトのホスト コントロールや Windows フォーム コントロールにデータをバインドできるようになりました。このチュートリアルでは、実行時に Microsoft Office Word 文書にコントロールを追加し、そのコントロールをデータにバインドする方法を説明します。

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

  • 実行時、文書に ContentControl を追加する。

  • データセットのインスタンスにコントロールを接続する BindingSource を作成する。

  • ユーザーがレコード間をスクロールし、コントロールで表示できるようにする。

Cc668208.alert_note(ja-jp,VS.90).gifメモ :

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

前提条件

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

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

    ここに挙げた Visual Studio のバージョンでは、Visual Studio Tools for Office が既定でインストールされます。インストールされているかどうかを確認する方法については、「Visual Studio Tools for Office のインストール」を参照してください。

  • Word 2007

  • AdventureWorksLT サンプル データベースが関連付けられている SQL Server 2005 または SQL Server 2005 Express の実行中のインスタンスへのアクセス。AdventureWorksLT データベースは、CodePlex の Web サイトからダウンロードできます。データベースを関連付ける方法の詳細については、以下のトピックを参照してください。

新規プロジェクトの作成

まず、Word アドイン プロジェクトを作成します。

新しいプロジェクトを作成するには

  • Visual Basic または C# を使用して、Populating Documents from a Database という名前の Word 2007 アドイン プロジェクトを作成します。

    詳細については、「方法 : Visual Studio Tools for Office プロジェクトを作成する」を参照してください。

    Visual Studio は ThisAddIn.vb ファイルまたは ThisAddIn.cs ファイルを開き、Populating Documents from a Database プロジェクトをソリューション エクスプローラに追加します。

データ ソースの作成

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

型指定されたデータセットをプロジェクトに追加するには

  1. [データ] メニューの [新しいデータ ソースの追加] をクリックします。

    データ ソース構成ウィザードが開きます。

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

  3. AdventureWorksLT データベースへの接続が既に設定されている場合は、その接続を選択し、[次へ] をクリックします。

    それ以外の場合は、[新しい接続] をクリックし、[接続の追加] ダイアログ ボックスを使用して新しい接続を作成します。詳細については、「方法 : SQL Server データベースへの接続を作成する」を参照してください。

  4. [アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。

  5. [データベース オブジェクトの選択] ページで、[テーブル] を展開し、[Customer (SalesLT)] を選択します。

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

    AdventureWorksLTDataSet.xsd ファイルがソリューション エクスプローラに追加されます。このファイルでは、次の項目を定義します。

    • AdventureWorksLTDataSet という名前の型指定されたデータセット。このデータセットは、AdventureWorksLT データベースの Customer (SalesLT) テーブルの内容を表します。

    • CustomerTableAdapter という名前の TableAdapterTableAdapter は、AdventureWorksLTDataSet のデータを読み書きするために使用します。詳細については、「TableAdapter の概要」を参照してください。

    これらのオブジェクトはどちらもこのチュートリアルの後半で使用します。

コントロールの作成とデータへのコントロールのバインド

このチュートリアルでデータベース レコードの表示に使用するインターフェイスは基本的なもので、文書内部に作成されます。1 つの ContentControl は、一度に 1 つのデータベース レコードを表示します。2 つの Button コントロールを使用すると、レコード間をスクロールできます。コンテンツ コントロールは BindingSource を使用してデータベースに接続します。

コントロールのデータへのバインドの詳細については、「コントロールへのデータのバインド」を参照してください。

文書にインターフェイスを作成するには

  1. ThisAddIn クラスで、次のコントロールを宣言し、AdventureWorksLTDataSet データベースの Customer テーブルを表示して、テーブル内をスクロールするようにします。

    Private adventureWorksDataSet As AdventureWorksLTDataSet
    Private customerTableAdapter As AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter
    Private customerBindingSource As System.Windows.Forms.BindingSource
    Private customerContentControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Private WithEvents button1 As Microsoft.Office.Tools.Word.Controls.Button
    Private WithEvents button2 As Microsoft.Office.Tools.Word.Controls.Button
    
    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter customerTableAdapter;
    private System.Windows.Forms.BindingSource customerBindingSource;
    private Microsoft.Office.Tools.Word.RichTextContentControl customerContentControl;
    private Microsoft.Office.Tools.Word.Controls.Button button1;
    private Microsoft.Office.Tools.Word.Controls.Button button2;
    
  2. ThisAddIn_Startup メソッドに次のコードを追加し、データセットを初期化して、AdventureWorksLTDataSet データベースから得た情報をデータセットに設定します。

    Me.adventureWorksDataSet = New AdventureWorksLTDataSet()
    Me.customerTableAdapter = New AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter()
    Me.customerTableAdapter.Fill(Me.adventureWorksDataSet.Customer)
    Me.customerBindingSource = New System.Windows.Forms.BindingSource()
    
    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.customerTableAdapter = new AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter();
    this.customerTableAdapter.Fill(this.adventureWorksDataSet.Customer);
    this.customerBindingSource = new System.Windows.Forms.BindingSource();
    
  3. ThisAddIn_Startup メソッドに次のコードを追加します。これによりホスト項目が生成され、文書の機能が拡張されます。詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。

    Dim currentDocument As Word.Document = Me.Application.ActiveDocument
    Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
    Word.Document currentDocument = this.Application.ActiveDocument;
    Document extendedDocument = currentDocument.GetVstoObject();
    
  4. 文書の先頭に範囲を定義します。これらの範囲により、テキストを挿入してコントロールを配置する場所が特定されます。

    extendedDocument.Paragraphs(1).Range.InsertParagraphBefore()
    extendedDocument.Paragraphs(1).Range.InsertParagraphBefore()
    extendedDocument.Paragraphs(1).Range.Text = "The companies listed in the AdventureWorksLT database:   "
    
    extendedDocument.Paragraphs(2).Range.Text = "  "
    
    Dim range1 As Word.Range = extendedDocument.Paragraphs(2).Range.Characters.First
    Dim range2 As Word.Range = extendedDocument.Paragraphs(2).Range.Characters.Last
    Dim range3 As Word.Range = extendedDocument.Paragraphs(1).Range.Characters.Last
    
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.Text = 
        "The companies listed in the AdventureWorksLT database:   \n";
    extendedDocument.Paragraphs[2].Range.Text = "  "; 
    
    Word.Range range1 = extendedDocument.Paragraphs[2].Range.Characters.First;
    Word.Range range2 = extendedDocument.Paragraphs[2].Range.Characters.Last;
    Word.Range range3 = extendedDocument.Paragraphs[1].Range.Characters.Last;
    
  5. 定義した範囲に、インターフェイス コントロールを追加します。

    Me.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1")
    Me.button1.Text = "Previous"
    Me.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2")
    Me.button2.Text = "Next"
    
    Me.customerContentControl = extendedDocument.Controls.AddRichTextContentControl( _
        range3, _
        "richTextContentControl1")
    
    this.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1");
    this.button1.Text = "Previous";
    this.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2");
    this.button2.Text = "Next";
    
    this.customerContentControl = extendedDocument.Controls.AddRichTextContentControl(
        range3,
        "richTextContentControl1");
    
  6. BindingSource を使用して、コンテンツ コントロールを AdventureWorksLTDataSet にバインドします。C# を使用して開発している場合は、Button コントロールの 2 つのイベント ハンドラを追加します。

    Me.customerBindingSource.DataSource = Me.adventureWorksDataSet.Customer
    Me.customerContentControl.DataBindings.Add( _
        "Text", _
        Me.customerBindingSource, _
        "CompanyName", _
        True, _
        Me.customerContentControl.DataBindings.DefaultDataSourceUpdateMode)
    
    this.customerBindingSource.DataSource = this.adventureWorksDataSet.Customer;
    this.customerContentControl.DataBindings.Add(
        "Text", 
        this.customerBindingSource, 
        "CompanyName", 
        true,
        this.customerContentControl.DataBindings.DefaultDataSourceUpdateMode);
    
    this.button1.Click += new EventHandler(button1_Click);
    this.button2.Click += new EventHandler(button2_Click);
    
  7. 次のコードを追加して、データベース レコード間を移動します。

    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click
        Me.customerBindingSource.MovePrevious()
    End Sub
    
    Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button2.Click
        Me.customerBindingSource.MoveNext()
    End Sub
    
    void button1_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MovePrevious();
    }
    
    void button2_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MoveNext();
    }
    

アドインのテスト

Word を開くと、コンテンツ コントロールにより AdventureWorksLTDataSet データセットのデータが表示されます。[次へ] ボタンと [前へ] ボタンをクリックして、データベース レコード間をスクロールします。

アドインをテストするには

  1. F5 キーを押します。

    customerContentControl という名前のコンテンツ コントロールが作成され、データが設定されます。同時に、adventureWorksLTDataSet という名前のデータセット オブジェクトと、customerBindingSource という名前の BindingSource がプロジェクトに追加されます。ContentControlBindingSource にバインドされ、さらにこれがデータセット オブジェクトにバインドされます。

  2. [次へ] ボタンと [前へ] ボタンをクリックして、データベース レコード間をスクロールします。

参照

処理手順

方法 : データベースのデータをワークシートに読み込む

方法 : データベースからドキュメントにデータを読み込む

方法 : サービスのデータをドキュメントに読み込む

方法 : オブジェクトのデータをドキュメントに読み込む

方法 : ワークシート内でデータベースのレコードをスクロールする

方法 : ホスト コントロールからのデータでデータ ソースを更新する

チュートリアル : ドキュメント レベルのプロジェクトでの単純データ バインディング

チュートリアル : ドキュメント レベルのプロジェクトでの複合データ バインディング

方法 : オブジェクトのデータをドキュメントに読み込む

方法 : ホスト コントロールからのデータでデータ ソースを更新する

概念

コントロールへのデータのバインド

Office ソリューションにおけるローカル データベース使用の概要

データ ソースの概要

データの表示の概要

Office ソリューションにおけるローカル データベース使用の概要

Visual Studio でのデータへの接続の概要

参照

BindingSource コンポーネントの概要

その他の技術情報

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

履歴の変更

日付

履歴

理由

2008 年 7 月

トピックを追加

SP1 機能変更