Actualizar la Base desde una vista SQL

18/11/2008 - 22:20 por Agustin Ithurbide | Informe spam
hola, tengo un formulario creado automaticamente, osea arrastre una vista al
formulario y me creo el Grid con sus controles de navegacion, el tema que
muestro en el formulario una vista de la Base de datos y necesito saber como
hacer para actualizar la tabla desde la vista, espero ser claro muchas
gracias.

saludos,,

Agustin
 

Leer las respuestas

#1 Alberto Poblacion
18/11/2008 - 21:55 | Informe spam
"Agustin Ithurbide" wrote in message
news:e%23G%
hola, tengo un formulario creado automaticamente, osea arrastre una vista
al formulario y me creo el Grid con sus controles de navegacion, el tema
que muestro en el formulario una vista de la Base de datos y necesito
saber como hacer para actualizar la tabla desde la vista, espero ser claro
muchas gracias.



Básicamente hay dos posibilidades:

1) Si la vista cumple una serie de requisitos relativamente estrictos,
que se describen en la documentación de Sql Server, se puede actualizar la
vista como si fuera una tabla, y los cambios se propagan a la tabla sobre la
que se ha construído la vista. Entre dichos requisitos se encuentran que la
vista provenga de una sola tabla (no puede ser un Join), que no tenga
funciones de agregación, y que todas las columnas de la tabla o bién estén
en la vista, o bien tengan un default, o bien admitan nulls.

2) Si tu vista resulta que no es actualizable, porque no cumple los
requisitos indicados, entonces hay que añadir sobre la vista los triggers
"instead of update", "instead of insert", e "instead of delete", y dentro
del cuerpo de los triggers realizar las operaciones necesarias para
actualizar las tablas subyacentes.

En ambos casos, no tendrías que hacer nada en la parte de C# en el
programa cliente, ya que la vista se comportaría como una tabla a efectos
del programa.

La alternativa sería realizar a medida los procesos de grabación en el
programa cliente. Si has generado el Form automáticamente, tendrás en la
parte de arriba un BindingNavigator con un botoncito de grabación (el
diskette). Puedes implementar el evento click de este botón, y dentro
recorrer con un bucle el DataSet vinculado al grid, examinar los cambios que
contiene, y construir en base a ellos las sentencias de acualización que
consideres oportunas y enviarlas al servidor mediante el ExecuteNonQuery de
un SqlCommand. Lleva bastante trabajo, así que si puedes es preferible que
procures "arreglar" la vista para que sea actualizable, y funcione con todos
los automatismos.

Preguntas similares