Insertar y Editar registro de Vistas

Insertar y Editar registro de Vistas


Las vistas se usan para mostrar campos que nos interesen de las tablas, campos que surgen de la combinación de varias tablas, etc.
En este esquema vemos una Vista que sale de la combinación de varias tablas.
La tabla Principal es la que contiene los datos principales, la otras tablas (auxiliarles),  contienen información
menos relevante de la Vista (por ejemplo Unidades de Medida, tipos de  precio)

Vamos a describir un ejemplo de insertar/editar registros:
Tenemos una tabla Presupuesto y una VistaPresupuesto (la cual solo muestra algunos campos de la tabla Presupuesto). La Vista tiene un campo idpresupuesto que también esta en la tabla Presupuesto , es la relación que usaremos.

0)  Siempre tendremso que tener un  manejador de Vista que se usara en el formulario.

Private ManejadorVistaPrespuesto As New VistaPresupuestoDAO

 
1) Para insertar un registro: 
 Es sencillo ya que lo que usamos en una manejador de la Tabla principal (en este caso AdaptaPresupuestoDAO)

Public Sub addPresupuesto_Click()

Dim manejadorPresupuesto As New AdaptadaPresupuestoDAO

manejadorPresupuesto.FormularioRegistrar(2) ' el 2 indica nº de paneles que tendrá el formulario

ManejadorVistaPrespuesto.MostrarGridView(GridViewPresupuesto) ' se mostraran los registro, segun los campos que tenga la vista.

End

2) La Edicion:
La edición no es tan directa. A continuación vemos los pasos a realizar:

Al hacer click en la opción del menu Editar:
Public Sub MenuEditar_Click()


'0. Definir clases VO temporales y DAO de manejo Tabla
Dim tmpVO As New VistaPresupuestoVO 'datos de un registro de vista
Dim tmpVO1 As New PresupuestoVO 'datos de un registro de una tabla
Dim tmpDAO As New AdaptadaPresupuestoDAO 'manejador DAO de tabla (será seguramente una adaptada ya que tendremos modificado el formulario automatizado con combobox o toma de dato de otras tablas)

'1. Obtener el registro de la vista que este seleccionado en el gridview de la Vista
tmpVO = ManejadorVistaPrespuesto.filaSeleccionadaVO()

'2. Si no es nulo, es porque esta seleccionado algo.
If Not IsNull(tmpVO) Then
'3. Uso el campo que relaciona las vista con la tabla: idpresupuesto. El valor lo obtengo por la fila seleccionada en la Vista tmpVO.idpresupuesto
' y busco el registro que tenga igual el valor de ese campo en el Tabla
' con .ConvertirResult, convierto el resultado en un Array de PresupuestoVO
tmpVO1 = tmpDAO.ConvertirResult(tmpDAO.BuscarIgualIdpresupuesto(tmpVO.idpresupuesto))[0]
'4. Uso los métodos de la clase DAO de la tabla para editar el registro
tmpDAO.FormularioTitulo = "Editando Presupuesto"

tmpDAO.FormularioModificarRegistroIdpresupuesto(tmpVO1.idpresupuesto, tmpVO1, 2)
'5. Presento datos en la Vista
ManejadorVistaPrespuesto.MostrarGridView(GridViewPresupuesto)

Endif

De esta manera se verá un formulario de edición, eligiendo una fila de un gridview donde tendremos cargados datos de una Vista.


NOTAS IMPORTANTE:
1) El campo que relaciona la vista con la tabla principal, debe de ser el primer campo de la tabla Vista, para que este se pueda usar al hacer click en la fila del gridview de la vista. En el ejemplo siguiente es el campo "iddescompuesto"

2) Los campos de nombre compuesto NO ESTAN PERMITIDOS, osea no es válido poner "presupuesto.total" como nombre del campo. Hay que usar un alias en la definición de la vista.
Ejemplo:

CREATE VIEW "VistaDescomLabores" AS select iddescompuesto,idpresupuesto,tipo,textocorto,precio,descompuestolabores.medicion as "medicion",descompuestolabores.total as "total" from descompuestolabores,tipo,labor
where
descompuestolabores.idlabor=labor.idlabor
and
descompuestolabores.idtipo=tipo.idtipo




No hay comentarios:

Publicar un comentario