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

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Alfredo Novoa
19/11/2008 - 13:11 | Informe spam
Hola Alberto,

El Tue, 18 Nov 2008 21:55:37 +0100, Alberto Poblacion escribió:

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.



Es más, una vista ES una tabla a todos los efectos (un tipo de tabla).
Igual que puedes hacer vistas no actualizables puedes hacer tablas no
actualizables.

Los programadores de aplicaciones tienen que tener en cuenta que el DBA
puede reemplazar una tabla por una vista con la misma estructura en
cualquier momento y sin avisar. Y una vista por una tabla también, claro.


Saludos
Respuesta Responder a este mensaje
#3 Agustin Ithurbide
19/11/2008 - 13:58 | Informe spam
Hola alberto, exelente tu explicacion voy hacer que la vista sea
actualizable me parece lo mas facil y rapido.

Muchas gracias por todo, un abrazo.

Agustin


"Alberto Poblacion"
escribió en el mensaje news:
"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.

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