Parametros sql y @oldvalue en ADO.NET

Cerrado
micase - 24 ene 2015 a las 03:54
 micase - 25 feb 2015 a las 04:41
Hola, tengo un problema, estoy probando un codigo que lo que hace es llenar un dataset, esto en el evento Load. Pero luego, en button1_click necesito comparar los valores viejos de la base de datos con los valores nuevos. Para saber si estos registros que cargue en form1_load cambiaron luego cuando hago button1_click, el problema esta en que no se como hacer que @oldnombre y @oldapallido tome cada uno de los diferentes valores de los diferentes registros del conjunto de datos. Gracias

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Try
connetionString = "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=C:\concurrencia\base.accdb;"
connection = New OleDbConnection(connetionString)
connection.Open()
adapter = New OleDbDataAdapter("SELECT * from tabla2", connection)
adapter.Fill(DataSet, "tabla2")



Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub




Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try
Dim comando As OleDbCommand = connection.CreateCommand()

adapter.UpdateCommand = New OleDbCommand("UPDATE tabla2 set nombre=@nombre, apellido=@apellido WHERE nombre=@oldnombre AND apellido=@oldapellido", connection)

adapter.UpdateCommand.Parameters.Add("@nombre", OleDbType.VarChar, 255).Value = txtID.Text
adapter.UpdateCommand.Parameters.Add("@apellido", OleDbType.VarChar, 255).Value = txtCharData.Text




parameter = adapter.UpdateCommand.Parameters.Add("@oldnombre", OleDbType.VarChar, 255, "nombre")
parameter.SourceVersion = DataRowVersion.Original


parameter = adapter.UpdateCommand.Parameters.Add("@oldapellido", OleDbType.VarChar, 255, "apellido")
parameter.SourceVersion = DataRowVersion.Original



AddHandler adapter.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)


adapter.Update(dataset, "tabla2")

connection.Close()

End Sub



Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs)
If args.RecordsAffected = 0 Then
args.Row.RowError = "Violacion concurrencia optimista"
args.Status = UpdateStatus.SkipCurrentRow
End If
End Sub

End Class

1 respuesta

jempdulintre Mensajes enviados 16 Fecha de inscripción miércoles, 19 de noviembre de 2014 Estatus Miembro Última intervención martes, 17 de febrero de 2015 2
Modificado el 13 mar 2018 a las 12:25
Por que mediante un botón y por que lo requieres comparar????,

Supongo que cargas la información en un datagrid, busca la propiedad que te actualice la información al instante, y únicamente esperas la confirmación del usuario par realizar la actualización a tu base de datos.

Cuando tu estas posicionado en tu fila, antes de editar la información,
en esta parte capturas los valores del dataset anterior y los guardas en variables de igual modo los nuevos valores.
Si el usuario no lo confirma le asignas los valores anteriores y si es la inversa le asignas los nuevos.


Con esto estarías evitando la parte de comparación valores nuevos y viejos.
0
Entiendo que se puede hacer de manera manual, pero yo queria saber si .NET me ofrece algun metodo para saber si ese conjunto de registros que tengo en mi dataset, fueron modificados por otro usuario desde otra maquina, y que me diga cuales. Gracias
0