Rendere visibile un controllo di una maschera con comando esterno

di il
13 risposte

Rendere visibile un controllo di una maschera con comando esterno

Buongiorno
Mi trovo ad affrontare il problema di cambiare lo stato visibile di un controllo di una maschera da un un msgbox attivato da un controllo di altra maschera.
Per essere più chiari: nella maschera1 ho un controllo che il cui stato visibile=false
nella maschera principale ho dato la seguente istruzione ad un pulsante: maschere!maschera1!.[testo1].visibile=true
metto in esecuzione l'argomento e mi viene segnalato l'errore che è "impossibile trovare il campo a cui viene fatto riferimento nell'espressione".
So che esiste la possibilità di cambiare lo stato dei campi anche a mezzo di istruzioni esterne.
Dove sbaglio?
Grazie per la risposta

13 Risposte

  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Margua ha scritto:


    ... maschere!maschera1!.[testo1].visibile=true
    A meno che non si tratti di un errore di trascrizione - copia incolla, c'è un punto di troppo prima di [testo1]
    Attento che non cambi lo stato dei campi ma lo stato dei controlli. Sei in una maschera, solo i controlli hanno la proprietà Visibile, non i campi.
    Se non funziona prova con
    Forms!... 
    al posto di maschere!
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Avevo trascritto male:
    Avevo anche provato con: Forms!maschera1![testo1].visibile= false ma mi genera lo stesso errore
    Non riesco capire dove sta l'errore.
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Ho risolto. Non so cosa sia successo ma con la seguente espressione è andato tutto bene
    [Forms]![maschera1]![Testo1].visibile=false
    Premetto che sto usando access 2013. Questo problema vi era stato mai segnalato?
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Margua ha scritto:


    Non riesco capire dove sta l'errore.
    Non so... a me funziona senza problemi. ... ah vedo ora che hai risolto... aspetta un istante, dove scrivevi quella cosa?
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Adesso mi segnala che non riesce a trovare la maschera dei controlli disattivati....
    non capisco proprio...
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Margua ha scritto:


    Adesso mi segnala che non riesce a trovare la maschera dei controlli disattivati....
    E' ovvio che la maschera deve essere aperta, diamo per assodato quello.
    Dove scrivevi quell'istruzione? In una macro? in VBA?
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    No grazie. Dopo tanti tentativi ho ricondotto il problema a questo Msgbox di cui adesso scrivo i codice

    Private Sub Comando4_Click()

    Dim Msg, Style, Title, Response

    Msg = "La Banca ha prodotto i contratti?"
    Style = vbYesNo + vbDefaultButton2
    Title = "Inserimento dati"
    'Help = "DEMO.HLP"
    'Ctxt = 1000

    Response = MsgBox(Msg, Style, Title)

    If Response = vbYes Then DoCmd.OpenForm "Movimenti"
    [Forms]![Movimenti]![CasellaCombinata118].Visible = False
    [Forms]![Movimenti]![Etichetta115].Visible = False ' User chose Yes.
    If Response = vbNo Then DoCmd.OpenForm "Movimenti"
    [Forms]![Movimenti]![CasellaCombinata118].Visible = True
    [Forms]![Movimenti]![Etichetta115].Visible = True

    End Sub

    Eseguendo l'istruzione senza la msgbox, tutto va bene, ma quando l'attivo, succedono tutte queste problematiche
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Margua ha scritto:


    No grazie.
    De che?

    Margua ha scritto:


    Dopo tanti tentativi ho ricondotto il problema a questo Msgbox di cui adesso scrivo i codice
    Più che colpa della MessageBox diciamo che è colpa... di quello che c'è scritto.
    Ci sono parecchie cose da rivedere. Ad esempio la dichiarazione delle variabili: metti il tipo, altrimenti son tutte variant
    Poi ... non sono convinto che tu abbia ben chiaro cosa succede quando si preme Sì o No. I blocchi If sono un po' "particolari", scritti su una riga sola.
    
    If Response = vbYes Then DoCmd.OpenForm "Movimenti"
    
    'queste due righe sotto vengono eseguite comunque, anche se Response non è vbYes
    [Forms]![Movimenti]![CasellaCombinata118].Visible = False
    [Forms]![Movimenti]![Etichetta115].Visible = False ' User chose Yes.
    
    If Response = vbNo Then DoCmd.OpenForm "Movimenti"
    
    'queste due righe sotto vengono eseguite comunque, anche se Response non è vbNo
    [Forms]![Movimenti]![CasellaCombinata118].Visible = True
    [Forms]![Movimenti]![Etichetta115].Visible = True
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Perché non passi ad OpenArgs il valore che poi su Load la maschera usa per condizionare la visibilità dei controlli...?
    Si dovrebbe sempre evitare di telecomandato cose da destra a sinistra... ogni oggetto deve essere indipendente e si evita di scrivere codice condizionato o condizionate altri oggetti esterni...
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Guarda che mancano gli End If (come già fatto notare da Phil)...
    Proverei un'alternativa più succinta:
    ...
    Response = MsgBox(Msg, Style, Title)
    DoCmd.OpenForm "Movimenti"
    
    Dim Visibile as Boolean
    Visibile = Not (Response = vbYes)
    [Forms]![Movimenti]![CasellaCombinata118].Visible = Visibile
    [Forms]![Movimenti]![Etichetta115].Visible = Visibile
    
    End Sub
    Ovviamente integrando i consigli di Phil e Alex...
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Ho cambiato il codice msgbox e adesso va tutto bene.
    Ecco il codice:
    Private Sub Comando4_Click()

    Dim C As Integer
    C = MsgBox("La Banca ha fornito i contratti?", vbYesNo)
    If C = vbYes Then
    DoCmd.OpenForm "Movimenti"

    Else
    If C = vbNo Then
    DoCmd.OpenForm "Movimenti"
    [Forms]![Movimenti]![CasellaCombinata118].Visible = True
    [Forms]![Movimenti]![Etichetta115].Visible = True
    End If
    End If


    End Sub

    Grazie
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Non serve la seconda condizione se non è VbYes è ovvio sia vbNo... quindi fa una cosa inutile... il secondo IF...

    In ogni caso ribadisco che tecnicamente è sbagliato quello che fai.
  • Re: Rendere visibile un controllo di una maschera con comando esterno

    Buongiorno Alex . Sei stato gentile a rispondere. Ho compreso la logica del tuo ragionamento e l'ho messa in pratica. Effettivamente il secondo If era di troppo.
Devi accedere o registrarti per scrivere nel forum
13 risposte