Problema en dataset con columnas calculadas

04/08/2008 - 13:25 por Tomas | Informe spam
Hola a todos.

Tengo un problema para actualizar una tabla que contiene una columna
calculada.

Me da el siguiente error: 'Campo_4' no se puede modificar, por ser una
columna calculada.

La base de datos es Sql Server 2000.

La tabla tiene cuatro campos, el primero es la clave "Campo_1", los dos
siguientes son datos y el cuarto es una columna calculada así "Campo_2 *
Campo_3".

// Conector a la base de datos.
SqlDataAdapter sqlDA = new SqlDataAdapter("SELECT * FROM dbo.Tabla",
conexion);
DataSet sqlDS = new DataSet();

// Cargar los datos de la tabla.
sqlDA.Fill(sqlDS, "Tabla");

// Agregar un registro a la tabla.
DataTable dataTable = sqlDS.Tables["Tabla"];
DataRow dr = dataTable.NewRow();
dr["Campo_1"] = 1;
dr["Campo_2"] = 2;
dr["Campo_3"] = 3;
dataTable.Rows.Add(dr);

// Actualizar la tabla.
sqlDA.Update(sqlDS, "Tabla"); < Aquí el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien me puede ayudar para averiguar la forma de actualizar una tabla que
tenga columnas calculadas?.

Gracias por anticipado.

Tomás.
 

Leer las respuestas

#1 Alberto Poblacion
05/08/2008 - 12:29 | Informe spam
"Tomas" wrote in message
news:
[...]
sqlDA.Update(sqlDS, "Tabla"); < Aquí el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien me puede ayudar para averiguar la forma de actualizar una tabla
que tenga columnas calculadas?.



Tendrás que revisar la sentencia de actualización que tienes dentro del
InsertCommand del DataAdapter (sqlDA). Cuando la tabla tiene un campo
calculado, no hay que enviar el valor para ese campo, asi que la sentencia
tendrá que ser algo así:

"Insert into MiTabla(Campo1, Campo2, Campo3) Values (...)" //Obsérvese que
hay que omitir el Campo4 que es calculado.

Si el DataAdapter lo has generado de forma automática mediante el
diseñador visual, tendrás que modificar a mano el texto de la sentencia
generada, que el diseñador lo habrá generado incluyendo el campo4.

Preguntas similares