Modificación Formularios Autogenerados


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