チュートリアル : アプリケーション レベルのプロジェクトでの単純データ バインディング
更新 : 2008 年 7 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 プロジェクトの種類
Microsoft Office のバージョン
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
Visual Studio 2008 Service Pack 1 (SP1) 以降、アプリケーション レベルのプロジェクトのホスト コントロールや Windows フォーム コントロールにデータをバインドできるようになりました。このチュートリアルでは、実行時に Microsoft Office Word 文書にコントロールを追加し、そのコントロールをデータにバインドする方法を説明します。
このチュートリアルでは、次の作業について説明します。
実行時、文書に ContentControl を追加する。
データセットのインスタンスにコントロールを接続する BindingSource を作成する。
ユーザーがレコード間をスクロールし、コントロールで表示できるようにする。
メモ : |
---|
お使いのマシンで、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 サイトからダウンロードできます。データベースを関連付ける方法の詳細については、以下のトピックを参照してください。
SQL Server Management Studio または SQL Server Management Studio Express を使用してデータベースを関連付ける方法については、「データベースをアタッチする方法 (SQL Server Management Studio)」を参照してください。
コマンド ラインを使用してデータベースを関連付ける方法については、「データベース ファイルを SQL Server Express にアタッチする方法」を参照してください。
新規プロジェクトの作成
まず、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 プロジェクトをソリューション エクスプローラに追加します。
データ ソースの作成
[データ ソース] ウィンドウを使用して、型指定されたデータセットをプロジェクトに追加します。
型指定されたデータセットをプロジェクトに追加するには
[データ] メニューの [新しいデータ ソースの追加] をクリックします。
データ ソース構成ウィザードが開きます。
[データベース] をクリックし、[次へ] をクリックします。
AdventureWorksLT データベースへの接続が既に設定されている場合は、その接続を選択し、[次へ] をクリックします。
それ以外の場合は、[新しい接続] をクリックし、[接続の追加] ダイアログ ボックスを使用して新しい接続を作成します。詳細については、「方法 : SQL Server データベースへの接続を作成する」を参照してください。
[アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。
[データベース オブジェクトの選択] ページで、[テーブル] を展開し、[Customer (SalesLT)] を選択します。
[完了] をクリックします。
AdventureWorksLTDataSet.xsd ファイルがソリューション エクスプローラに追加されます。このファイルでは、次の項目を定義します。
AdventureWorksLTDataSet という名前の型指定されたデータセット。このデータセットは、AdventureWorksLT データベースの Customer (SalesLT) テーブルの内容を表します。
CustomerTableAdapter という名前の TableAdapter。TableAdapter は、AdventureWorksLTDataSet のデータを読み書きするために使用します。詳細については、「TableAdapter の概要」を参照してください。
これらのオブジェクトはどちらもこのチュートリアルの後半で使用します。
コントロールの作成とデータへのコントロールのバインド
このチュートリアルでデータベース レコードの表示に使用するインターフェイスは基本的なもので、文書内部に作成されます。1 つの ContentControl は、一度に 1 つのデータベース レコードを表示します。2 つの Button コントロールを使用すると、レコード間をスクロールできます。コンテンツ コントロールは BindingSource を使用してデータベースに接続します。
コントロールのデータへのバインドの詳細については、「コントロールへのデータのバインド」を参照してください。
文書にインターフェイスを作成するには
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;
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();
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();
文書の先頭に範囲を定義します。これらの範囲により、テキストを挿入してコントロールを配置する場所が特定されます。
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;
定義した範囲に、インターフェイス コントロールを追加します。
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");
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);
次のコードを追加して、データベース レコード間を移動します。
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 データセットのデータが表示されます。[次へ] ボタンと [前へ] ボタンをクリックして、データベース レコード間をスクロールします。
アドインをテストするには
F5 キーを押します。
customerContentControl という名前のコンテンツ コントロールが作成され、データが設定されます。同時に、adventureWorksLTDataSet という名前のデータセット オブジェクトと、customerBindingSource という名前の BindingSource がプロジェクトに追加されます。ContentControl が BindingSource にバインドされ、さらにこれがデータセット オブジェクトにバインドされます。
[次へ] ボタンと [前へ] ボタンをクリックして、データベース レコード間をスクロールします。
参照
処理手順
方法 : ワークシート内でデータベースのレコードをスクロールする
方法 : ホスト コントロールからのデータでデータ ソースを更新する
チュートリアル : ドキュメント レベルのプロジェクトでの単純データ バインディング
チュートリアル : ドキュメント レベルのプロジェクトでの複合データ バインディング
方法 : ホスト コントロールからのデータでデータ ソースを更新する
概念
Office ソリューションにおけるローカル データベース使用の概要
Office ソリューションにおけるローカル データベース使用の概要
参照
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2008 年 7 月 |
トピックを追加 |
SP1 機能変更 |