Mostrar/ocultar un campo en un Estado - ACCESO

Jeen -  
 Jeen -
Hola,

Vamos, cuando genero un estado, desearía que los campos en blanco no se muestren. Soy principiante en escritura de código... pero esto es lo que he probado:

Private Sub TOTAL_FRAIS_BeforeUpdate(Cancel As Integer)
If IsNull(Me.TOTAL_FRAIS.Value) Then
Me.Étiquette32.Visible = False
Me.TRANSPORT_ALLER.Visible = False
Me.Étiquette33.Visible = False
Me.TRANSPORT_RETOUR.Visible = False
Me.Étiquette34.Visible = False
Me.TOTAL_TRANSPORT.Visible = False
Me.Étiquette42.Visible = False
Me.Étiquette44.Visible = False
Me.Étiquette35.Visible = False
Me.NOMBRE_DE_REPAS.Visible = False
Me.Étiquette36.Visible = False
Me.PRIX_PAR_REPAS.Visible = False
Me.Étiquette37.Visible = False
Me.TOTAL_REPAS.Visible = False
Me.Étiquette43.Visible = False
Me.Étiquette38.Visite = False
Me.NOMBRE_DE_NUIT.Visible = False
Me.Étiquette39.Visible = False
Me.PRIX_HOTEL.Visible = False
Me.Etiquette40.Visible = False
Me.TOTAL_HEBERGEMENT.Visible = False
Me.Etiquette41.Visible = False
Me.TOTAL_FRAIS.Visible = False
Me.Etiquette31.Visible = False
End If
End Sub

Por pura casualidad, ¿podría ayudarme diciéndome qué no está bien?
¡MUCHAS GRACIAS!

Configuración: Windows 7 / Firefox 5.0

7 respuestas

  1. Jean_Jacques
     
    Hola JEEN,

    La solución se encuentra del lado de la función Verdadero/Falso.
    Aquí un espécimen como ejemplo:

    =VerdaderoFalso([RéfOpération]=1;"Montant brut de la vente";VerdaderoFalso([RéfOpération]=2;"Montant brut de la vente";"¡Error!" ))

    NB: Esta función suele documentarse con el equivalente en inglés: IIF

    Lo encontrarás fácilmente en Google
    Ver también el sitio de referencia: http://access.developpez.com/cours/

    ***
    Cordialement
    La ciencia no hace más que encontrar lo que ha existido desde siempre.
    REEVES Hubert.
    0
  2. Jeen
     
    Muchas gracias por este enlace. ¡Me es muy útil! Sobre todo para entender el código VBA.

    Sin embargo, no logro hacer la conexión entre la función VerdaderoFalso y que no aparezcan mis campos ...

    VerdaderoFalso([ChampX]=0; me.[campoY].visible=false;me.[campoY].visible=true) ?
    0
  3. jean_Jacques
     
    Buenas noches Jeen,

    Al activar la tecla F1, obtendrás la ayuda en línea.
    Escribe: IIF en el campo de búsqueda intuitiva.
    NB: " " equivale a -> No mostrar

    No olvides empezar con el signo = (como en EXCEL)

    Saludos
    ***
    La ciencia solo encuentra lo que siempre ha existido.
    REEVES hUBERT.
    0
  4. Jeen
     
    Hola Jean Jacques,

    Gracias por todos tus valiosos consejos. ¡Ayuda mucho!

    Solo que, perdón por abusar de nuevo, pero tengo otro problema...

    Cuando mi función se expresa como abajo tengo un mensaje de error: "Problema de compilación - Se esperaba: número de línea o etiqueta o instrucciones o fin de instrucciones" al seleccionar el primer signo "="
    ⇒ =IIf("TRANSPORT_ALLER=0", "", [TRANSPORT_ALLER])

    Cuando pongo esa misma función sin el primer signo "=", tengo un mensaje de error: "Problema de compilación - Se esperaba: ="
    He probado varias sintaxis, he buscado en la ayuda, en Internet y no encuentro la respuesta a mi problema. He intentado incluir "Private sub... End sub" pero no funciona.

    ¡Otra vez gracias!!!
    0
  5. UJAT4232
     
    Mis disculpas, Jeen. Al releerlo cuidadosamente, me doy cuenta de que me equivoqué. En tu primer post estabas a un paso de la solución. De hecho, en tu evento de Apertura (si es que he entendido bien esta vez) conviene repetir la sintaxis if/endif como sigue:

    Private Sub Report_Open(Cancel As Integer)

    If IsNull(Me.<nombre_del_campo>) Then
    Etiqueta29.Visible = False
    End If

    DoCmd.Maximize
    End Sub

    Lo siento por haber hecho perder el tiempo. Nos vemos.</nombre_del_campo>
    0
    1. UJAT4232
       
      Jeen,
      Aquí hay una sintaxis que (en mi caso) permite ocultar un campo en un estado.
      Se debe ingresar en las propiedades de la zona de texto, pestaña datos/fila fuente control
      =VraiFaux([<nom_du_champ>]="";"")
      0
    2. Jeen
       
      Gracias. Pero tengo un problema de referencia circular, y si cambio el nombre del control como sugiere, me aparece un mensaje “#Error” en mi Estado...

      Y por cierto me preguntaba, ¿cómo puedo hacer el mismo procedimiento que ustedes hacen con las Etiquetas, porque en la pestaña de datos no tengo fuente de control sino solo etiquetas activas. no puedo introducir expresiones.

      Gracias de nuevo
      0
  6. Jeen
     
    ¡Gracias por su ayuda!

    He hecho exactamente lo que me dijo. Pero los campos vacíos de mi Estado siguen visibles. Creo que es mi archivo el que podría tener un problema. Después de varios intentos distintos, no funciona. El único cambio que hice en el código que me proporcionó fue reemplazar "IsNull" por "IsEmpty"...

    ¡Gracias de nuevo por su tiempo!
    0
  7. Jean_Jacques
     
    Bonsoir Jeen,
    El tema del ocultamiento de campos se trata en este enlace.
    Te dejo que lo descubras:

    http://www.vbfrance.com/forum/sujet-CACHER-CHAMP-DANS-ETAT-ACCESS-QD-CELUI-CI_719208.aspx

    La solución propuesta:

    If Not IsNull(Me.Controls("NomduContrôle").value) Then
    Me.Controls("NomduContrôle").Visible = True
    Me.Controls("Étiquette_Contrôle").Visible = True
    Else:
    Me.Controls("NomduContrôle").Visible = False
    Me.Controls("Étiquette_Contrôle").Visible = False
    End If
    0
    1. Jean_Jacques Mensajes publicados 1045 Fecha de registro   Estado Miembro Última intervención   112
       
      Así fue.
      0
    2. Jeen
       
      Gracias.
      También encontré este foro. Lo intenté de nuevo, una vez ocultando por defecto mis campos y la otra haciendo If ...then ...else ...End If. En ambos casos, no funciona. Creo que los códigos simplemente no tienen impacto en mi estado. Estoy prácticamente segura de haberlo hecho correctamente. He hecho varias pruebas, nada funciona.

      En cualquier caso, muchas gracias por su ayuda !!!

      Private Sub Report_Activate()
      If Not IsNull(Me.Controls(TOTAL_FRAIS).Value) Then
      Me.Controls(TRANSPORT_ALLER).Visible = True
      Me.Controls(Etiquette32).Visible = True
      End If
      End Sub
      0