none
Detectar cambios en DataSet RRS feed

  • Pregunta

  • Hola Amigos,

    Tengo una aplicacion WinForms con VB2008 y SQL2008.

    En un formulario tengo varios controles enlazados a datos con un DataSet, TableAdapter y BindingSource.

    Estoy teniendo problemas para detectar si hay cambios sin guardar cuando el Formulario se cierra, ahora tengo este codigo:

    Private Sub frmArticulos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
      If Me.DsArticulos.HasChanges Then
          If MsgBox("Hay cambios pendientes de guardar, desea guardarlos ahora?",MsgBoxStyle.Question)=MsgBoxResult.Yes Then
            Guardar()
          End If
      End If
    End Sub
    

    Lo mas extraño es que tambien ejecuto este mismo codigo en el evento: ARTICULOSBindingSource_PositionChanged; y aca si funciona bien.

    Que estoy haciendo mal?

     

    Saludos,

     


    Jorge Conil
    miércoles, 12 de enero de 2011 11:40

Respuestas

  • hola

    ese DsArticulos, es la misma instancia que has suado para asignar al BindingSource ?

    o sea ese DsArticulos es el asignado al DataSource del BindingSource y es donde se impactan los cambios de los controles

    por ahi podrias probar usando

    Private Sub frmArticulos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     
      Dim ds As DataSet  = DirectCast(BindingSourc.Datasource, DataSet)
     
      If ds.HasChanges Then

          If MsgBox("Hay cambios pendientes de guardar, desea guardarlos ahora?",MsgBoxStyle.Question)=MsgBoxResult.Yes Then
            Guardar()
          End If
      End If
     
    End Sub

    de esta forma aseguras que es el mismo en donde se aplican los cambios


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 12 de enero de 2011 12:14

Todas las respuestas

  • hola

    ese DsArticulos, es la misma instancia que has suado para asignar al BindingSource ?

    o sea ese DsArticulos es el asignado al DataSource del BindingSource y es donde se impactan los cambios de los controles

    por ahi podrias probar usando

    Private Sub frmArticulos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     
      Dim ds As DataSet  = DirectCast(BindingSourc.Datasource, DataSet)
     
      If ds.HasChanges Then

          If MsgBox("Hay cambios pendientes de guardar, desea guardarlos ahora?",MsgBoxStyle.Question)=MsgBoxResult.Yes Then
            Guardar()
          End If
      End If
     
    End Sub

    de esta forma aseguras que es el mismo en donde se aplican los cambios


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 12 de enero de 2011 12:14
  • Hola Leandro,

    Si, ese es el unico dataset que tengo en el Form.

    Lo que hice ahora le agregue una linea antes del IF; y ahora funciona bien... no se si es correcto lo que hice o no...

    Me
    .ARTICULOSBindingSource.EndEdit() 
    If Me .DsArticulos.HasChanges Then

    Jorge Conil
    miércoles, 12 de enero de 2011 12:31