Insertar nuevo registro

03/12/2005 - 15:17 por Victor Herrera | Informe spam
Buenas

Tengo un problema al tratar de insertar un nuevo registro en una base de
datos Access con VB .NET 2005

Dim fila As Data.DataRow
fila = dsMusica.Tables("musica").NewRow
fila("cd") = lblCD.Text
fila("carpeta") = "hola"
fila("ano") = "2006"
dsMusica.Tables("musica").Rows.Add(fila)
daMusica.Update(dsMusica, "musica")

me da el error en Update del DataAdapter: Update requiere que InsertCommand
sea válido cuando se pasa la colección DataRow con nuevas filas.

la BD tiene la tabla muscia, con 4 campos, Id autonumerico,carpeta,cd y ano

se supone que el autonumerico no se pone porque access deberia incrementarlo
solo.En VB 6 al menos funcionaba asi.

de ante mano gracias
 

Leer las respuestas

#1 A.Poblacion
04/12/2005 - 10:38 | Informe spam
"Victor Herrera" wrote in message
news:
Tengo un problema al tratar de insertar un nuevo registro en una base de
datos Access con VB .NET 2005

Dim fila As Data.DataRow
fila = dsMusica.Tables("musica").NewRow
fila("cd") = lblCD.Text
fila("carpeta") = "hola"
fila("ano") = "2006"
dsMusica.Tables("musica").Rows.Add(fila)
daMusica.Update(dsMusica, "musica")

me da el error en Update del DataAdapter: Update requiere que


InsertCommand
sea válido cuando se pasa la colección DataRow con nuevas filas.

la BD tiene la tabla muscia, con 4 campos, Id autonumerico,carpeta,cd y


ano

se supone que el autonumerico no se pone porque access deberia


incrementarlo
solo.En VB 6 al menos funcionaba asi.




Lo que te dice el error es que dentro del DataAdapter daMusica te falta
definirle el InsertCommand, por lo que no sabe cómo grabar en la base de
datos.
Aunque no nos has puesto el código que usas para definir el daMusica,
probablemente has hecho algo parecido a lo siguiente:

Dim daMusica as new OleDbDataAdapter("Select * from Musica", conexion);

Esto solo inicializa el SelectCommand, por lo que ese dataadapter
únicamente sirve para leer de la tabla, y no para grabar. Puedes construir y
asignar manualmente el InsertCommand, pero si no te quieres molestar, puedes
usar el CommandBuilder para que lo haga por ti. Simplemente añade esta
linea:

Dim ocb as New OleDbCommanBuilder(daMusica)

Y a continuación ya puedes usar el mismo código que tenías.

Preguntas similares