Formularios y cuadros de dialogo

Un lugar dónde compartir funciones, procedimientos y aplicaciones
Avatar de Usuario
LukeSky
Nivel 3
Mensajes: 74
Registrado: Dom Nov 25, 2018 9:15 pm

Formularios y cuadros de dialogo

Mensajepor LukeSky » Dom May 17, 2020 6:48 pm

Buenas tardes, estoy leyendo un "librito" en inglés, sobre Access... y bueno me ha sorprendido que se expliquen técnicas muy útiles sobre la forma de usar formularios como cuadros de dialogo, a modo de formularios vinculados, para intercambiar valores entre objetos.

En este momento, he observado varias metodologías para vincular formularios con otros emergentes llamados desde el formulario principal:

1. Usar directamente el nombre de los formularios y usar los campos para relacionarlos. Lo que sería una solución de bajo nivel, ya que aumenta la dependencia para su mantenimiento y disminuye la posibilidad de reutilización del código.

Esto no deja de ser la solución más rapida al hacer referencia a los formularios mediante la notación: Forms![nombreFormulario] o Forms("nombre").

2. Usar variables globales. Pasar valores al formulario que llama a otro formulario, generalmente implica establecer una variable global con el nombre del formulario que realiza la llamada.

Esta opción sería realmente una sub-opción de la primera, en donde ya empieza a ser mas reutilizable el código, disminuyendo el acoplamiento. Y ambos enfoques serían bidireccionales en el intercambio de información.

Dentro de esta opción, a veces resulta de utilidad, añadir una variable en el modulo de clase del formulario hijo, que sea instanciada con una referencia al formulario padre. De esta manera, podríamos evitar una variable global con el nombre del formulario hijo.

Código: Seleccionar todo

Option Compare Database
Dim frmPrevious As Form

Private Sub Form_Open(Cancel As Integer)
On Error GoTo Form_Open_Err

    Set frmPrevious = Screen.ActiveForm

Form_Open_Exit:
    Exit Sub

Form_Open_Err:
    Select Case Err.Number
        Case 2475 'Si no hay ningun formulario abierto anulamos el error
            Err = 0
            Set frmPrevious = Nothing
        Case Else
            MsgBox Error$
            Resume Form_Open_Exit
    End Select
End Sub


Ejemplo: http://www.mediafire.com/file/seveuhys0 ... 2.mdb/file

3. Uso de OpenArgs en la llamada al formulario dependiente. Esta opción sirve para poder pasar una lista de valores (unidireccional), normalmente usando un caracter como "|", que nos permitirá realizar una extracción a una variable de tipo matriz. Por lo que se aprovecharía para pasar el nombre del formulario que realiza la llamada al formulario dependiente o cuadro de diálogo.

Ejemplo: http://www.mediafire.com/file/ptghgkax8 ... accdb/file

4. Uso de los fundamentos de POO. Sin duda, me ha parecido la mejor opción, se usa la definición de propiedades dentro del modulo de la clase formulario, para poder intercomunicar datos, apoyandose en los eventos personalizados.

Ejemplo: http://www.mediafire.com/file/p4pld64iw ... accdb/file

Otro ejemplo definiendo una propiedad que contiene una referencia al formulario que realiza la llamada, está más acoplado en código que el ejemplo anterior, y por lo tanto, no sería el más adecuado.

http://www.mediafire.com/file/f0lhkmr5z ... accdb/file


Para muchos ya sabrían de estos métodos, así que espero que para quien los desconociera les sea de utilidad. Saludos.

Volver a “Almacén Accesiano”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado