チュートリアル : アプリケーション レベルのプロジェクトでの複合データ バインディング
更新 : 2008 年 7 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 プロジェクトの種類
Microsoft Office のバージョン
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
Visual Studio 2008 Service Pack 1 (SP1) 以降、アプリケーション レベルのプロジェクトのホスト コントロールや Windows フォーム コントロールにデータをバインドできるようになりました。このチュートリアルでは、実行時に Microsoft Office Excel ブックにコントロールを追加し、そのコントロールをデータにバインドする方法を説明します。
このチュートリアルでは、次の作業について説明します。
実行時に、ワークシートに ListObject コントロールを追加する。
データセットのインスタンスにコントロールを接続する 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 のインストール」を参照してください。
Excel 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 にアタッチする方法」を参照してください。
新規プロジェクトの作成
まず、Excel 用のアドイン プロジェクトを作成します。
新しいプロジェクトを作成するには
Visual Basic または C# を使用して、Populating Worksheets from a Database という名前の Excel 2007 アドイン プロジェクトを作成します。
詳細については、「方法 : Visual Studio Tools for Office プロジェクトを作成する」を参照してください。
Visual Studio は ThisAddIn.vb ファイルまたは ThisAddIn.cs ファイルを開き、Populating Worksheets from a Database プロジェクトをソリューション エクスプローラに追加します。
データ ソースの作成
[データ ソース] ウィンドウを使用して型指定されたデータセットをプロジェクトに追加します。
型指定されたデータセットをプロジェクトに追加するには
[データ] メニューの [新しいデータ ソースの追加] をクリックします。
データ ソース構成ウィザードが開きます。
[データベース] をクリックし、[次へ] をクリックします。
AdventureWorksLT データベースへの接続が既に設定されている場合は、その接続を選択し、[次へ] をクリックします。
それ以外の場合は、[新しい接続] をクリックし、[接続の追加] ダイアログ ボックスを使用して新しい接続を作成します。詳細については、「方法 : SQL Server データベースへの接続を作成する」を参照してください。
[アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。
[データベース オブジェクトの選択] ページで、[テーブル] を展開し、[Address (SalesLT)] を選択します。
[完了] をクリックします。
AdventureWorksLTDataSet.xsd ファイルがソリューション エクスプローラに追加されます。このファイルでは、次の項目を定義します。
AdventureWorksLTDataSet という名前の型指定されたデータセット。このデータセットは、AdventureWorksLT データベースの Address (SalesLT) テーブルの内容を表します。
AddressTableAdapter という名前の TableAdapter。TableAdapter は、AdventureWorksLTDataSet のデータを読み書きするために使用します。詳細については、「TableAdapter の概要」を参照してください。
これらのオブジェクトはどちらもこのチュートリアルの後半で使用します。
コントロールの作成とデータへのコントロールのバインド
このチュートリアルでは、ユーザーがブックを開くとすぐに、事前に選択したテーブル内のすべてのデータが ListObject コントロールによって表示されます。リスト オブジェクトは BindingSource を使用してコントロールをデータベースに接続します。
コントロールのデータへのバインドの詳細については、「コントロールへのデータのバインド」を参照してください。
リスト オブジェクト、データセット、およびテーブル アダプタを追加するには
ThisAddIn クラスで、次のコントロールを宣言し、AdventureWorksLTDataSet データセットの Address テーブルを表示するようにします。
Private addressListObject As Microsoft.Office.Tools.Excel.ListObject Private adventureWorksDataSet As AdventureWorksLTDataSet Private addressTableAdapter As AdventureWorksLTDataSetTableAdapters.AddressTableAdapter Private addressBindingSource As System.Windows.Forms.BindingSource
private Microsoft.Office.Tools.Excel.ListObject addressListObject; private AdventureWorksLTDataSet adventureWorksDataSet; private AdventureWorksLTDataSetTableAdapters.AddressTableAdapter addressTableAdapter; private System.Windows.Forms.BindingSource addressBindingSource;
ThisAddIn_Startup メソッドに次のコードを追加し、データセットを初期化して、AdventureWorksLTDataSet データセットから得た情報をデータセットに設定します。
Me.addressTableAdapter = New AdventureWorksLTDataSetTableAdapters.AddressTableAdapter() Me.adventureWorksDataSet = New AdventureWorksLTDataSet() Me.addressTableAdapter.Fill(Me.adventureWorksDataSet.Address) Me.addressBindingSource = New System.Windows.Forms.BindingSource()
this.addressTableAdapter = new AdventureWorksLTDataSetTableAdapters.AddressTableAdapter(); this.adventureWorksDataSet = new AdventureWorksLTDataSet(); this.addressTableAdapter.Fill(this.adventureWorksDataSet.Address); this.addressBindingSource = new System.Windows.Forms.BindingSource();
ThisAddIn_Startup メソッドに次のコードを追加します。これによりホスト項目が生成され、ワークシートの機能が拡張されます。詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。
Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet) Dim extendedWorksheet As Worksheet = worksheet.GetVstoObject()
Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1]; Worksheet extendedWorksheet = worksheet.GetVstoObject();
範囲を作成して ListObject コントロールを追加します。
Dim cell As Excel.Range = extendedWorksheet.Range("$A$1:$G$5", System.Type.Missing) Me.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1")
Excel.Range cell = extendedWorksheet.Range["$A$1:$G$5", System.Type.Missing]; this.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1");
BindingSource を使用して、コンテンツ コントロールを AdventureWorksLTDataSet にバインドします。リスト オブジェクトにバインドする列の名前を渡します。
Me.addressBindingSource.DataSource = Me.adventureWorksDataSet.Address Me.addressListObject.AutoSetDataBoundColumnHeaders = True Me.addressListObject.SetDataBinding( _ Me.addressBindingSource, "", "AddressID", "AddressLine1", _ "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode")
this.addressBindingSource.DataSource = this.adventureWorksDataSet.Address; this.addressListObject.AutoSetDataBoundColumnHeaders = true; this.addressListObject.SetDataBinding( this.addressBindingSource, "", "AddressID", "AddressLine1", "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode");
アドインのテスト
Excel を開くと、ListObject コントロールにより AdventureWorksLTDataSet データセットの Address テーブルのデータが表示されます。
アドインをテストするには
F5 キーを押します。
addressListObject という名前の ListObject コントロールがワークシートに作成されます。同時に、adventureWorksLTDataSet という名前のデータセット オブジェクトと、addressBindingSource という名前の BindingSource がプロジェクトに追加されます。ListObject が BindingSource にバインドされ、さらにこれがデータセット オブジェクトにバインドされます。
参照
処理手順
方法 : ワークシート内でデータベースのレコードをスクロールする
方法 : ホスト コントロールからのデータでデータ ソースを更新する
チュートリアル : ドキュメント レベルのプロジェクトでの単純データ バインディング
チュートリアル : ドキュメント レベルのプロジェクトでの複合データ バインディング
概念
Office ソリューションにおけるローカル データベース使用の概要
Office ソリューションにおけるローカル データベース使用の概要
参照
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2008 年 7 月 |
トピックを追加 |
SP1 機能変更 |