Error con actualización de Dataset.

30/06/2003 - 17:28 por Lope | Informe spam
Buenas.

Tengo un form en el que muestro los datos de una fila de un
dataset. Quiero editar los datos de dicha fila y que posteriormente se
carguen los datos actualizados a la BD.

El problema es que al ejecutar el codigo que actualiza la fila
del dataset se me muestra el siguiente error:

+++++++++++
Excepción no controlada del tipo
'System.InvalidOperationException' en system.data.dll

Información adicional: La generación SQL dinámica para
UpdateCommand no es compatible con SelectCommand, que no devuelve
ninguna información sobre columnas clave.
+++++++++++

El código que se ejecuta, y donde se supone que hay algo mal,
es el siguiente:

+++++++++++++++++++++++++
Dim objAdaptadorDatos As New
System.Data.OleDb.OleDbDataAdapter(strSQLConx, objConx)

'Defino el DataSet y lo relleno sólo con la linea a modificar.

Dim objDS As New DataSet("NombreDataSet")
Dim objCommandBuilder As New
OleDb.OleDbCommandBuilder(objAdaptadorDatos)

objAdaptadorDatos.MissingSchemaAction MissingSchemaAction.AddWithKey
objAdaptadorDatos.Fill(objDS, "NombreDataSet")

'Ahora "extraigo" la fila para actualizarla.

Dim objTabla As DataTable
objTabla = objDS.Tables("OrdenTrabajo")
Dim objFila As DataRow
objFila = objTabla.Rows(0) 'El DataSet sólo contiene la fila a
editar, insisto.

objFila.BeginEdit()
[Aquí se asignan los datos de las cajas de texto a cada uno de
los campos]
objFila.EndEdit()

'Finalmente cargo el DataSet actualizado en la BD.

objAdaptadorDatos.Update(objDS, "NombreDataSet")
objConx.Close()
++++++++++++++++++++++++++

¿Alguien sabe dónde puede estar el error?

Salu2. Lope.
 

Leer las respuestas

#1 Lope
01/07/2003 - 08:49 | Informe spam
"Amalia" <> escribió:

Hola Lope,

Tu error se produce porque tu tabla no tiene una columna
establecida como clave principal y el commandbuilder no
puede realizar la actualización.



Bien, incluyo en el dataset la columna que es la clave
principal de la tabla en el origen de datos. En concreto es la columna
"Id". Pero sigue dándome el mismo error :-?

Para corregirlo debes establecer tú mismo el comando que
deseas ejecutar sobre la base de datos, por ejemplo, en tu
caso, se trata de una actualización, pues debes escribir
el UpdateCommand del dataadapter con la instrucción UPDATE
para la BdD.



Bueno, si no hay otro remedio... ;-)

Gracias, Amalia.

Salu2. Lope.

Preguntas similares