次の方法で共有


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

ホスト コントロールをデータ ソースにバインドし、データ ソースを更新すると、その変更内容はコントロール内のデータにも反映されます。 このプロセスは、主に 2 つの手順で構成されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      注意

      System.Windows.Forms.DataSourceUpdateMode.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] を選択します。

      注意

      [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 を使用してデータを更新する

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

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

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

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

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

概念

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

データセットのデータの保存