次の方法で共有


DataSet.MergeFailed イベント

ターゲットとソースの DataRow に同じ主キー値が格納されていて、 EnforceConstraints が true に設定されているときに発生します。

Public Event MergeFailed As MergeFailedEventHandler
[C#]
public event MergeFailedEventHandler MergeFailed;
[C++]
public: __event MergeFailedEventHandler* MergeFailed;

[JScript] JScript では、このクラスで定義されているイベントを処理できます。ただし、独自に定義することはできません。

イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、MergeFailedEventArgs 型の引数を受け取りました。次の MergeFailedEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ 説明
Conflict マージの矛盾の説明を返します。
Table DataTable オブジェクトを返します。

解説

イベント処理の詳細については、「 イベントの利用 」を参照してください。

使用例

[Visual Basic, C#, C++] MergeFailed イベントを使用する例を次に示します。

 

Private Shared Sub DemonstrateMergeFailedEvent()
    ' Create a DataSet with one table containing two columns.
    Dim ds AS DataSet = New DataSet("myDataSet")
    Dim t As DataTable = New DataTable("Items")
    
    ' Add table to the DataSet.
    ds.Tables.Add( t )

    ' Add two columns to the DataTable.
    t.Columns.Add( "id", Type.GetType("System.Int32") )
    t.Columns.Add( "item", Type.GetType("System.Int32") )

    ' Set the primary key to the first column.
    t.PrimaryKey = new DataColumn() { t.Columns("id") }

    ' Add MergeFailed event handler for the table.
    AddHandler ds.MergeFailed, New MergeFailedEventHandler( AddressOf Merge_Failed )

    ' Create a second DataTable identical to the first, 
    Dim t2 As DataTable = t.Clone()

    ' Set the primary key of the new table to the second column.
    ' This will cause the MergeFailed event to be raised when the
    ' table is merged into the DataSet.
    t2.PrimaryKey = New DataColumn() { t2.Columns("item") }
    
    ' Merge table into the DataSet.
    Console.WriteLine( "Merging..." )
    ds.Merge( t2, false, MissingSchemaAction.Add )
End Sub

Private Shared Sub Merge_Failed( sender As object, e As MergeFailedEventArgs )
    Console.WriteLine( "Merge_Failed Event: '{0}'", e.Conflict )
End Sub


[C#] 

private static void DemonstrateMergeFailedEvent()
{
    // Create a DataSet with one table containing two columns.
    DataSet ds = new DataSet("myDataSet");
    DataTable t = new DataTable("Items");
    
    // Add table to the DataSet.
    ds.Tables.Add( t );

    // Add two columns to the DataTable.
    t.Columns.Add( "id", typeof(int) );
    t.Columns.Add( "item", typeof(int) );

    // Set the primary key to the first column.
    t.PrimaryKey = new DataColumn[] { t.Columns["id"] };

    // Add MergeFailed event handler for the table.
    ds.MergeFailed += new MergeFailedEventHandler( Merge_Failed );

    // Create a second DataTable identical to the first, 
    DataTable t2 = t.Clone();

    // Set the primary key of the new table to the second column.
    // This will cause the MergeFailed event to be raised when the
    // table is merged into the DataSet.
    t2.PrimaryKey = new DataColumn[] { t2.Columns["item"] };
    
    // Merge the table into the DataSet.
    Console.WriteLine( "Merging..." );
    ds.Merge( t2, false, MissingSchemaAction.Add );
}

private static void Merge_Failed( object sender, MergeFailedEventArgs e )
{
    Console.WriteLine( "Merge_Failed Event: '{0}'", e.Conflict );
}


[C++] 

public:
    static void DemonstrateMergeFailedEvent() {
        // Create a DataSet with one table containing two columns.
        DataSet* ds = new DataSet(S"myDataSet");
        DataTable* t = new DataTable(S"Items");

        // Add table to the DataSet.
        ds->Tables->Add(t);

        // Add two columns to the DataTable.
        t->Columns->Add(S"id", __typeof(int));
        t->Columns->Add(S"item", __typeof(int));

        // Set the primary key to the first column.
        DataColumn* FirstColumn[] = { t->Columns->Item[S"id"] };
        t->PrimaryKey = FirstColumn;

        // Add MergeFailed event handler for the table.
        ds->MergeFailed += new MergeFailedEventHandler(0, Merge_Failed);

        // Create a second DataTable identical to the first, 
        DataTable* t2 = t->Clone();

        // Set the primary key of the new table to the second column.
        // This will cause the MergeFailed event to be raised when the
        // table is merged into the DataSet.
        DataColumn* SecondColumn[] = { t2->Columns->Item[S"item"] };
        t2->PrimaryKey = SecondColumn;

        // Merge the table into the DataSet.
        Console::WriteLine(S"Merging...");
        ds->Merge(t2, false, System::Data::MissingSchemaAction::Add);
    };

    static void Merge_Failed(Object* sender, System::Data::MergeFailedEventArgs* e) {
        Console::WriteLine(S"Merge_Failed Event: ' {0}'", e->Conflict);
    };

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

DataSet クラス | DataSet メンバ | System.Data 名前空間