次の方法で共有


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

更新 : 2008 年 7 月

対象

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

ドキュメント レベルのプロジェクト

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

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

  • Excel 2007

  • Word 2007

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

ホスト コントロールをデータ ソースにバインドし、データ ソースを更新すると、その変更内容はコントロール内のデータにも反映されます。

Visual Studio 2008 Service Pack 1 (SP1) 以降、アプリケーション レベルのプロジェクトのデータにホスト コントロールをバインドできるようになりました。SP1 をインストールしていない場合、ホスト コントロールはドキュメント レベルのプロジェクトでのみ使用できます。

このプロセスは、主に 2 つの手順で構成されます。

  1. コントロールで変更されたデータを使用して、インメモリ データ ソースを更新します。一般に、インメモリ データ ソースは DataSetDataTable、またはその他のデータ オブジェクトです。

  2. インメモリ データ ソースで変更されたデータを使用して、データベースを更新します。これは、データ ソースが SQL Server や Microsoft Office Access データベースなどのバックエンド データベースに接続されている場合にのみ有効です。

ホスト コントロールとデータ バインディングの詳細については、「ホスト項目とホスト コントロールの概要」および「コントロールへのデータのバインド」を参照してください。

インメモリ データ ソースの更新

既定では、単純データ バインディングを有効にしているホスト コントロール (Word 文書のコンテンツ コントロールや Excel ワークシートの名前付き範囲コントロールなど) は、データの変更内容をインメモリ データ ソースに保存しません。つまり、エンド ユーザーがホスト コントロールの値に変更を加えてからコントロールの外に移動すると、コントロールの新しい値は自動的にはデータ ソースに保存されません。

データ ソースにデータを保存するには、実行時に特定のイベントに応答してデータ ソースを更新するコードを記述します。または、コントロールの値が変更されたときに自動的にデータ ソースを更新するようにコントロールを構成することもできます。

インメモリ データ ソースに ListObject の変更を保存する必要はありません。ListObject コントロールをデータにバインドすると、ListObject コントロールは変更内容を自動的にインメモリ データ ソースに保存します。追加のコードを記述する必要はありません。

実行時にインメモリ データ ソースを更新するには

  • コントロールをデータ ソースにバインドする Binding オブジェクトの WriteValue メソッドを呼び出します。

    Excel ワークシートの NamedRange コントロールに加えられた変更をデータ ソースに保存する例を次に示します。この例は、namedRange1 という名前の NamedRange コントロールで Value2 プロパティがデータ ソースのフィールドにバインドされていることを前提としています。

    Me.NamedRange1.DataBindings("Value2").WriteValue()
    
    this.namedRange1.DataBindings["Value2"].WriteValue();
    

インメモリ データ ソースの自動更新

インメモリ データ ソースを自動的に更新するように、コントロールを構成することもできます。ドキュメント レベルのプロジェクトでこれを行うには、コードまたはデザイナを使用します。アプリケーション レベルのプロジェクトでは、コードを使用する必要があります。

コードを使用してインメモリ データ ソースを自動的に更新するようにコントロールを設定するには

  • コントロールをデータ ソースにバインドする Binding オブジェクトの DataSourceUpdateMode プロパティを使用します。データ ソースの更新には 2 つのオプションがあります。

    • コントロールの検証時にデータ ソースを更新するには、このプロパティを OnValidation に設定します。

    • コントロールのデータ バインド プロパティの値が変更されたときにデータ ソースを更新するには、このプロパティを OnPropertyChanged に設定します。

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

      OnPropertyChanged オプションは、Word ホスト コントロールには適用されません。Word では文書変更やコントロール変更の通知は提供されないためです。ただし、Word 文書上の Windows フォーム コントロールには、このオプションを使用できます。

    コントロールの値を変更するときに自動的にデータ ソースを更新するように NamedRange コントロールを構成する例を次に示します。この例は、namedRange1 という名前の NamedRange コントロールで Value2 プロパティがデータ ソースのフィールドにバインドされていることを前提としています。

    Me.NamedRange1.DataBindings("Value2").DataSourceUpdateMode = _
        DataSourceUpdateMode.OnPropertyChanged
    
    this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
        DataSourceUpdateMode.OnPropertyChanged;
    

デザイナを使用してインメモリ データ ソースを自動的に更新するようにコントロールを設定するには

  1. Visual Studio のデザイナで、Word 文書または Excel ブックを開きます。

  2. データ ソースの自動更新を行うコントロールをクリックします。

  3. [プロパティ] ウィンドウで (DataBindings) プロパティを展開します。

  4. (Advanced) プロパティの横にある省略記号ボタン (VisualStudioEllipsesButton スクリーンショット) をクリックします。

  5. [フォーマットと詳細バインド] ダイアログ ボックスで、[データ ソース更新モード] ドロップダウン リストをクリックし、次の値を選択します。

    • コントロールの検証時にデータ ソースを更新するには、[OnValidation] を選択します。

    • コントロールのデータ バインド プロパティの値が変更されたときにデータ ソースを更新するには、[OnPropertyChanged] を選択します。

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

      [OnPropertyChanged] オプションは、Word ホスト コントロールには適用されません。Word では文書変更やコントロール変更の通知は提供されないためです。ただし、Word 文書上の Windows フォーム コントロールには、このオプションを使用できます。

  6. [フォーマットと詳細バインド] ダイアログ ボックスを閉じます。

データベースの更新

インメモリ データ ソースがデータベースに関連付けられている場合、データ ソースへの変更内容を使用して、データベースを更新する必要があります。データベース更新の詳細については、「データ保存の概要」および「方法 : TableAdapter を使用してデータを更新する」を参照してください。

データベースを更新するには

  1. コントロールの BindingSourceEndEdit メソッドを呼び出します。

    デザイン時に文書またはブックにデータ バインド コントロールを追加すると、BindingSource が自動的に生成されます。BindingSource によって、コントロールはプロジェクト内の型指定されたデータセットに接続されます。詳細については、「BindingSource コンポーネントの概要」を参照してください。

    次のコード例は、プロジェクトに customersBindingSource という名前の BindingSource が含まれていることを前提としています。

    Me.CustomersBindingSource.EndEdit()
    
    this.customersBindingSource.EndEdit();
    
  2. プロジェクトで生成された TableAdapter の Update メソッドを呼び出します。

    デザイン時に文書またはブックにデータ バインド コントロールを追加すると、TableAdapter が自動的に生成されます。TableAdapter によって、プロジェクト内の型指定されたデータセットはデータベースに接続されます。詳細については、「TableAdapter の概要」を参照してください。

    次のコード例は、Northwind データベースの Customers テーブルに接続し、プロジェクトには customersTableAdapter という名前の TableAdapter と northwindDataSet という名前の型指定されたデータセットが含まれていることを前提としています。

    Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
    
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    

参照

処理手順

方法 : TableAdapter を使用してデータを更新する

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

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

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

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

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

概念

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

データ保存の概要

履歴の変更

日付

履歴

理由

2008 年 7 月

アプリケーション レベルのアドインでのデータ バインディングに関する情報を追加

SP1 機能変更