Modificación Formularios Autogenerados
1. Campos relacionados entre dos tablas: Modificar un campo valuebox generado automáticamente por un combobox.
En algunas bases de datos, tenemos una tabla la cual tiene un campo numérico que es el id de otro campo en otra tabla.
Por ejemplo:
La tabla Subcategoria tiene un campo (idcapitulo), que la relaciona con otra tabla Categoria. Lo que se pretende que cuando se cambia el TextoCapitulo, al tener referenciado por el Idcapitulo, en subcategoria no hay que modificar nada, y si se hace una Vista combinando ambas tablas, la información esta actualizada.
La información almacenada en Subcategoria, podria ser:
Subcategoria | ||
idsubcategoria | idcapitulo | textoSubcategoria |
0 | 1 | pintado habitacion |
1 | 1 | pintado techo |
2 | 2 | piscina |
3 | 2 | fuente |
Categoria | |
idcapitulo | textoCapitulo |
1 | Pintura Exterior |
2 | Pintura Interior |
3 | Impermeabilizacion |
Presentacion “Vista de datos”: | ||
0 | Pintura Exterior | pintado habitacion |
1 | Pintura Exterior | pintado techo |
2 | Pintura Interior | piscina |
3 | Pintura Interior | fuente |
El mapbdvista, genera la función GeneradorCodigoFormulario(), automaticamente, y no analiza esta relación.
Por lo tanto lo que mostrará es un formulario con un valuebox, en el campo idcapitulo, para los formularios automáticos de registro/edicion:
Si es para registrar: (1)
codigocampos &= "valuebox|idcapitulo|" & ("idcapitulo") & "|0;"
Si es para editar: (2)
codigocampos &= "valuebox|idcapitulo|" & ("idcapitulo") & "|" & datosEditar.idcapitulo & ";"
Si queremos que se muestre un combobox, rellenos con datos de la tabla "categoria", tendremos que añadir el siguiente cogido a la funcion GenerarCodigoFormulario()
'---------------------------------------------------
'Para añadir registro, cargar combobox
'---------------------------------------------------
Dim resultado As Collection
Dim opcionesCampoCompuesto As String
Dim opcionesCampoId As String
Dim aEditar As String
Dim numero As Integer
resultado = comun.ExtraerLista("categoria", "textocapitulo", "idcategoria")
opcionesCampoCompuesto = resultado["Compuesto"]
opcionesCampoId = Replace(resultado["Id"], " ", "")
If tipo = "registrar" Then
'no hacer nada...
Else
'nombre del campo a cambiar: idcapitulo
numero = Split(opcionesCampoId, ",").Find(datosEditar.idcapitulo)
aEditar = Split(opcionesCampoCompuesto, ",")[numero]
Endif
Y luego sustituir las linea que genera el programa (1 y 2), por estas:
Si es para registrar:
codigocampos &= "combobox|idcapitulo|" & ("idcapitulo") & "| " & opcionesCampoCompuesto & "||" & opcionesCampoId & ";"
Si es para editar:
codigocampos &= "combobox|idcapitulo|" & ("idcapitulo") & "| " & opcionesCampoCompuesto & "|" & aEditar & "|" & opcionesCampoId & ";"
Es esta comparación vemos la comparación entre original y el modificado con un combobox:
Nota:
Es recomendable usar una clase Heredada ("adaptable_XX_DAO"), para no macharcar a la que genera el programa automaticamente, y que este en otro directorio "Clases Adaptadas", por si tenemos que generar las clases DAO y VO, no se pierdan los cambios.
No hay comentarios:
Publicar un comentario