Ver Mensaje Individual
  #7 (permalink)  
Antiguo 21/01/2015, 18:41
Avatar de leodp77
leodp77
 
Fecha de Ingreso: marzo-2013
Mensajes: 39
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Concurrencia en ado.net

Si lo que ocurre es lo siguiente, entendí el problema en tu primer mensaje:
La aplicación se ejecuta en un equipo 1 y en un equipo 2. Un usuario en el equipo 1 abre la aplicación, ve los datos, y procede a modificar una fila de la tabla. Antes de enviar los datos a la base de datos, otro usuario en el equipo 2 modifica la base de datos mediante el mismo programa. En el equipo 1, luego de presionar el botón Guardar para enviar los datos a la base de datos, el programa lanza una excepción DBConcurrencyException, al ejecutar UpdateCommand.

Para controlar esta excepcion, lo unico que tenés que hacer es lo siguiente:

Código vb:
Ver original
  1. Try
  2.             Me.TableAdapterManager.UpdateAll(Me.TestingDBDataSet)
  3.         Catch ex As DBConcurrencyException
  4.             MessageBox.Show("Error de concurrencia")
  5. End Try

El evento completo quedaría así:

Código vb:
Ver original
  1. Private Sub UsuariosBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles UsuariosBindingNavigatorSaveItem.Click
  2.  
  3.         Me.Validate()
  4.         Me.UsuariosBindingSource.EndEdit()
  5.         Try
  6.             Me.TableAdapterManager.UpdateAll(Me.TestingDBDataSet)
  7.         Catch ex As DBConcurrencyException
  8.             MessageBox.Show("Error de concurrencia")
  9.         End Try
  10.  
  11.         Me.UsuariosTableAdapter.Fill(Me.TestingDBDataSet.Usuarios)
  12.  
  13.     End Sub

Obviamente es conveniente capturar todas las excepciones que se puedan lanzar, podés incluso poner tantos catch como quieras, para controlar cada excepción.
El objeto UsuariosBindingNavigatorSaveItem representaría al botón guardar.

El form quedaría algo así.
__________________
"La mejor forma de obtener información correcta de los foros de internet es enviar algo incorrecto y esperar las correcciones"
-- Matthew Austern

Última edición por leodp77; 21/01/2015 a las 18:49