Principales respuestas
Detectar cambios en DataSet

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
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 Subde esta forma aseguras que es el mismo en donde se aplican los cambios
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Eduardo PorteschellerModerator viernes, 14 de enero de 2011 12:57
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 Subde esta forma aseguras que es el mismo en donde se aplican los cambios
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Eduardo PorteschellerModerator viernes, 14 de enero de 2011 12:57
-
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