ADO.NET y VB.NET

sgomez
02 de Septiembre del 2004
Soy principiante en el uso de visual basic punto net. Se programar en visual basic 6. En este ultimo estoy acostumbrado a ADO y los recordset para conectarme a las bases de datos de access.
Ahora estoy tratando de aprender ADO.NET y es una cosa totalmente distinta. Leí ejemplos bajados de internet, la ayuda del programa. En todos ellos muestran codigos iguales al que les estoy mostrando.
Ya aprendí a seleccionar datos y traerlos a un dataset y aprendí a insertar nuevas filas a la base de datos.
Lo que quiero aprender ahora es traer datos de una tabla, modificarlos y posteriormente enviar la actualizacion a la base de datos, pero sin ejecutar una consulta de actualizacion que recorra todas las filas, lo que yo quiero es enviar la actualizacion de, solamente, la fila que modifiqué. Por lo que leí, esa es la gran ventaja de ADO.NET sobre ADO. Tratando de lograr esto armé el codigo que les estoy enviando.
El mismo no me dá ningun error, es decir, se ejecuta de punta a punta normalmente pero no veo los cambios en la base de datos. ¿que estoy haciendo mal?
La base de datos es de access 2000 y la tabla se llama mitabla y tiene los siguientes campos:
campo1, texto de 10, clave principal, contenido:"Hola"
campo2,texto de 10, contenido: "Mundo"

Estos ultimos datos se los paso por si alguno quiere hacer la prueba del codigo que hice yo...
DESDE YA AGRADEZCO A TODOS!!



Sub Main()
Dim myDataAdapter As New OleDb.OleDbDataAdapter("Select * from mitabla", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:bd1.mdb")
Dim midataset As New DataSet()
Dim micommandBuilder As New OleDb.OleDbCommandBuilder(myDataAdapter)
myDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
myDataAdapter.Fill(midataset, "tablita")
Dim midatatable As Data.DataTable
midatatable = midataset.Tables("tablita")
Dim fila As DataRow = midatatable.NewRow
fila = midatatable.Select("campo1 = 'Hola'")(0)
fila.BeginEdit()
fila.Item(0) = "Chau"
fila.Item(1) = "Mundito"
fila.EndEdit()
myDataAdapter.UpdateCommand = micommandBuilder.GetUpdateCommand
midataset.AcceptChanges()
myDataAdapter.Update(midataset, "tablita")
End Sub

Ruben
02 de Septiembre del 2004
Desde mi punto de vista tienes algunas cosas de mas:
- No es necesario que crees una nueva tabla, pues ya la tienes en tu dataset, y la gran falla que veo es que no estas adicionando el nuevo Row a tu dataset, esto se hace asi:
midataset.Tables("tablita").Rows.Add(fila)
e iria despues del endedit()

Espero esto te ayude en algo

Saludos.