Visualización condicional en Access?

Guenoë Mensajes publicados 1 Estado Miembro -  
 gregory -
Hola,

En mi base de datos Access, busco mostrar un campo de un formulario condicionado por el valor de otro campo en el mismo formulario.
En las condiciones de ejecución de las macros hay acciones para mostrar un informe, una tabla, etc... pero no encuentro nada respecto a la visualización condicional de campos.

¿Puede ayudarme?

Gracias de antemano.
Configuración: Windows Vista Firefox 2.0.0.11

1 respuesta

  1. CalicoJack Mensajes publicados 48 Estado Miembro 29
     
    Tu campo de formulario podría ser invisible y, cuando cumpla ciertos criterios, hacerse visible. ¿Si esa es tu pregunta? Tengo una solución.

    Tomemos, por ejemplo, un formulario que serviría para introducir los precios de ciertos artículos. Este formulario contendría los siguientes campos por defecto:

    NOMBRE EN LA TABLA
    - Artículo
    - Costo
    - Precio de venta
    - Razón

    NOMBRE EN EL FORMULARIO
    - txtArticulo
    - txtCout
    - txtPrix
    - txtRazon

    Pero si el usuario introduce un precio de venta menor que el Costo del artículo, aparece otro campo y es el campo RAZÓN. Que serviría para poner una razón para vender un artículo más barato que su costo de compra (ejemplo: Promoción para destruir a la competencia).

    Primero hay que crear ese campo en la tabla. Luego, hay que dejar el control (el txtBox RAZÓN) invisible por defecto. Para ello, en las propiedades de txtRazon, hay que poner VISIBLE en FALSE.

    Luego hay que establecer una condición para su visualización. La condición es: SI precio < costo MUESTRA RAZÓN. En VBA queda:

    IF [me.txtPrix]<[me.txtCout] THEN txtRazon.visible = TRUE

    Ahora que tenemos nuestra “fórmula”, Access debe tratarla en el momento oportuno. Este momento es tras la actualización del txtBox de precio y solamente si un Costo también está presente.

    Por lo tanto, hay que insertar nuestra fórmula en el evento AFTERUPDATE de txtPrix. Para hacerlo hay que ir a las propiedades de txtPrix, pestaña EVENT y colocar el código en AFTERUPDATE.

    Lo que se verá sería así:

    SUB txtPrix_AfterUpdate

    IF IS NOT NULL(me.txtCout) THEN
    IF [me.txtPrix]<[me.txtCout] THEN txtRazon.visible = TRUE
    END IF

    END SUB


    Lo que ocurre es: tras la actualización del campo PRECIUM, Access verifica si el campo COSTO no está vacío. Si no está vacío, verifica si el PRECIO es menor que el COSTO y, si es así, hace visible el campo RAZÓN.

    Voilà.

    PS: También hay que incluir este procedimiento en ONCURRENT para que la caja de RAZÓN se muestre cuando se regresa a un registro anterior.
    8
    1. gregory
       
      Hola,

      Cómo incluir el procedimiento en "oncurrent".
      He probado tu fórmula, funciona, pero cuando vuelvo a abrir el formulario, mi campo sigue invisible sin importar el valor de mi celda condicional.
      0