Grabar cambios en VB.NET

Tucki
11 de Abril del 2004
Este es un ejemplo que proporciona MS. Consiste en capturar el evento RowUpdated para modificar el valor de uno de sus campos. Sólo le he modificado los nombres de las columnas y de la BD, ya que son lo que he probado en mi ordenador.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:etcdatos.mdb;")


' Use the DataAdapter to fill and update the DataSet.
Dim catDA As OleDbDataAdapter = New OleDbDataAdapter("SELECT num_bits, notas FROM bits ORDER BY num_bits", nwindConn)

catDA.InsertCommand = New OleDbCommand("INSERT INTO bits (notas) Values(?)", nwindConn)
catDA.InsertCommand.CommandType = CommandType.Text

catDA.InsertCommand.Parameters.Add("@notas", OleDbType.Char, 15, "notas")

nwindConn.Open()

' Fill the DataSet.
Dim catDS As DataSet = New DataSet()
catDA.Fill(catDS, "bits")

' Add a new row.
Dim newRow As DataRow = catDS.Tables("bits").NewRow()
newRow("notas") = "prueba"
catDS.Tables("bits").Rows.Add(newRow)

' Include an event to fill in the Autonumber value.
AddHandler catDA.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

' Update the DataSet.
catDA.Update(catDS, "bits")

nwindConn.Close()
MsgBox("ya")
End Sub

Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs)
' Include a variable and a command to retrieve the identity value from the Access database.
Dim newID As Integer = 0
'Dim idCMD As OleDbCommand = New OleDbCommand("SELECT max(num_bits)+1 from bits", nwindConn)
MsgBox("dentro")
If args.StatementType = StatementType.Insert Then
' Retrieve the identity value and store it in the CategoryID column.
'newID = CInt(idCMD.ExecuteScalar())
args.Row("num_bits") = 100
End If
End Sub

El evento es capturado, y, si pongo un textbox vinculado a la columna de la tabla, veo que cambia el valor y pone 100. Sin embargo, cuando recupero los datos de nuevo, aparece el valor temporal que le asigna VB

Por si sirve de ayuda, el fichero .mdb ha sido creado en Office 2000 Premium y Visual Basic .NET MSDE 2002 7.0.9500 y Framework 1.0.3705

¿Alguien sabe dónde puede estar el fallo?