none
Merge no actualiza RowState de Dataset RRS feed

  • Pregunta

  • Hola a todos!

    Tengo dos datasets iguales cargados desde dos orígenes de datos diferentes, y necesito conocer las diferencias entre uno y otro.
    Quiero evitar recorrer todas las filas una a una y realizar el update/insert oportuno, y para ello estoy usando el método Merge de la clase DataSet.

    La verdad es que el resultado en el DataSet final que va recibiendo el merge es el bueno, pero HasChanges siempre me devuelve False y GetChanges Nothing obviamente....

    Os dejo el código, lo he probado con otro origen de datos conocido por todos como AdventureWorks y hace lo mismo....

            'dataset
            Dim dsEmployees As New DsEmployee
            Dim dsEmployees1 As New DsEmployee1
    
            'table adapter
            Dim taEmployees As New DsEmployeeTableAdapters.EmployeeTableAdapter
            Dim taEmployees1 As New DsEmployee1TableAdapters.EmployeeTableAdapter
    
            'fill original
            taEmployees.Fill(dsEmployees.Employee)
    
            'fill de la copia
            taEmployees1.Fill(dsEmployees1.Employee)
    
            'dataset para merge
            Dim dsEmployeeMerge As New DataSet
    
            'merge
            dsEmployeeMerge.Merge(dsEmployees1, False)
            dsEmployeeMerge.AcceptChanges()
            dsEmployeeMerge.Merge(dsEmployees, False)
    
            'si tiene cambios
            If dsEmployeeMerge.HasChanges Then
    
                MsgBox("tiene cambios")
    
            End If

    Gracias de antemano!
    viernes, 12 de junio de 2009 16:32

Todas las respuestas

  • Hola
    Cuales son los cambios porque yo no los veo


    Si la respuesta es correcta, marcala como correcta.
    Tambien puedes votar como util si te fue de ayuda
    DCE 5 ESTRELLAS PLATINO
    viernes, 12 de junio de 2009 17:14
  • Hola Pedro,

    En teoria los cambios son las diferencias entre los 2 datasets, no se si se ha entendido lo que quiero hacer.
    Si yo quiero conocer las diferencias entre el contenido de 2 datasets tipados iguales y actualizar esos cambios a Base de Datos como lo harias??

    Un saludo




    viernes, 12 de junio de 2009 17:35
  • Hola

    Recuerda que al usar AcceptChanges, camibas el rowstate de cada fila, te adjunto parte del manual del commando:

    Cuando se llama a AcceptChanges en DataSet , cualquier objeto DataRow que aún se encuentre en modo de edición finalizará correctamente sus modificaciones. La propiedad RowState de cada DataRow también cambia; las filas Added y Modified se convierten en Unchanged y se quitan las filas Deleted .

     

    Por la tanto el comando Merge, no encontrara nada Added o Modified , entonces que une?

    Saludos
    Bitnius

    Programador en VB.NET 2008, SQL SERVER 2008, Crystal Report 2008 Si la respuesta es correcta, marcála como correcta. También puedes votar como útil si te sirvió.
    • Propuesto como respuesta Bitnius sábado, 20 de junio de 2009 4:54
    sábado, 20 de junio de 2009 4:54