Problema para actualizar una tabla con una columna calculada

04/08/2008 - 17:26 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, "Campo_4", es una columna calculada así:
"Campo_2 * Campo_3".

El trozo de código para reproducir el problema es el siguiente:

// 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"); < Aqui el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien sabe como se puede actualizar una tabla que tenga columnas
calculadas?.

Gracias por anticipado.

Tomás.

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
04/08/2008 - 18:43 | Informe spam
Simplemente usted quiere hacer algo que no está permitido hacer: Una columna
calculada no es actualizable (justamente, porque se calcula automáticamente).

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Tomas" wrote:

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, "Campo_4", es una columna calculada así:
"Campo_2 * Campo_3".

El trozo de código para reproducir el problema es el siguiente:

// 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"); < Aqui el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien sabe como se puede actualizar una tabla que tenga columnas
calculadas?.

Gracias por anticipado.

Tomás.



Respuesta Responder a este mensaje
#2 Tomas
05/08/2008 - 10:30 | Informe spam
Hola Gustavo, gracias por su tiempo.

A parte de decirme lo evidente, que ya conocía y que, por este motivo
publiqué este mensaje, creo que la pregunta que formulo sigue vigente:

¿Alguien sabe como se puede actualizar una tabla que tenga columnas
calculadas?



Por que yo me planteo la siguiente situación: Una aplicación muestra en un
rejilla, los datos de una tabla. Entre los datos que muestra hay columnas
"normales" y columnas "calculadas".
El usuario se mueve por la rejilla y modifica, las columnas "normales" que
necesita, las columnas "calculadas", evidentemente las ve pero, no las puede
tocar, ni las toca, porque son automáticas.
Cuando el usuario termina su trabajo, pulsa el botón de guardar, que llama
al método "sqlDA.Update(sqlDS, "Tabla");" y se produce el error que
comentamos.
A mi entender, se supone que hay que hacer algo previo o preparatorio para
guardar los datos para que el error no se produzca.
Por este motivo, creo que mi pregunta sigue vigente, ¿qué hay que hacer para
que no se produzca el error?.

Gracias de nuevo.



"Gustavo Larriera (MVP)"
escribió en el mensaje
news:
Simplemente usted quiere hacer algo que no está permitido hacer: Una
columna
calculada no es actualizable (justamente, porque se calcula
automáticamente).

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Tomas" wrote:

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, "Campo_4", es una columna calculada
así:
"Campo_2 * Campo_3".

El trozo de código para reproducir el problema es el siguiente:

// 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"); < Aqui el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien sabe como se puede actualizar una tabla que tenga columnas
calculadas?.

Gracias por anticipado.

Tomás.



Respuesta Responder a este mensaje
#3 Jesús López
05/08/2008 - 14:32 | Informe spam
Pues eso parece más bien un bug del SqlCommandBuilder. Parece que el
SqlCommandBuilder genera comandos de inserción en los que se incluyen las
columnas calculadas, cosa que no debería hacer.

Te sugiero que informes del bug a Microsoft y mientras tanto utilices
comandos de inserción y actualización creados por tí en vez de usar los que
genera automáticamente el SqlCommandBuilder.


Saludos:

Jesús López
www.solidq.com



"Tomas" escribió en el mensaje
news:
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, "Campo_4", es una columna calculada así:
"Campo_2 * Campo_3".

El trozo de código para reproducir el problema es el siguiente:

// 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"); < Aqui el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien sabe como se puede actualizar una tabla que tenga columnas
calculadas?.

Gracias por anticipado.

Tomás.

Respuesta Responder a este mensaje
#4 Tomas
05/08/2008 - 17:23 | Informe spam
Gracias Jesús.

Voy a ver como se puede hacer porque, me parece que para "hablar" de bugs
con Microsoft hay que hacerlo en Inglés y el mío es francamente pésimo.

Gracias por tu interés.


"Jesús López" escribió en el
mensaje news:%
Pues eso parece más bien un bug del SqlCommandBuilder. Parece que el
SqlCommandBuilder genera comandos de inserción en los que se incluyen las
columnas calculadas, cosa que no debería hacer.

Te sugiero que informes del bug a Microsoft y mientras tanto utilices
comandos de inserción y actualización creados por tí en vez de usar los
que genera automáticamente el SqlCommandBuilder.


Saludos:

Jesús López
www.solidq.com



"Tomas" escribió en el mensaje
news:
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, "Campo_4", es una columna calculada
así: "Campo_2 * Campo_3".

El trozo de código para reproducir el problema es el siguiente:

// 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"); < Aqui el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien sabe como se puede actualizar una tabla que tenga columnas
calculadas?.

Gracias por anticipado.

Tomás.





Respuesta Responder a este mensaje
#5 Jorge
05/08/2008 - 18:52 | Informe spam
lo que dicen es cierto sobre el SqlCommandBuilder este tomara tu consulta y
creara un comando de insercion o actualizacion basado en los campos de tu
consulta, si tu consulta incluye el campo calculado definitivamente tendras
problemas al realizar la actualizacion.
si aun asi quieres emplear el commandbuilder una solucion seria que calcules
el "campo calculado" (disculpen la redundancia) en el cliente y solo
obtengas los campos no calculados de la base de datos, pero de ser asi cual
seria el beneficio de tener un campo calculado? je je
sobre como se actualizan los campos calculados, yo creo que simplemente se
ejecutan en el momento de la solicitud a la base de datos, no existen Datos
en un campo calculados, quizas una formula pero en la definiciion del campo
no en cada registro.


Jorge Luis Vera
Ing. de Sistemas



"Tomas" wrote in message
news:
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, "Campo_4", es una columna calculada así:
"Campo_2 * Campo_3".

El trozo de código para reproducir el problema es el siguiente:

// 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"); < Aqui el ERROR: 'Campo_4' no se puede
modificar, por ser una columna calculada.

¿Alguien sabe como se puede actualizar una tabla que tenga columnas
calculadas?.

Gracias por anticipado.

Tomás.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida