Codice per visualizzare o meno un campo

di il
8 risposte

Codice per visualizzare o meno un campo

Buongiorno,
ho visto che ci sono argomenti simili ma purtroppo non ne riesco a uscirne.
Sono in una maschera singola, ho una casella di riepilogo chiamata (ID_Assenza), tra i diversi valori che contiene c'è "Ferie".
Quello che vorrei è, se ID_Assenza = "Ferie" allora mi rendi visibile il campo Ore_Vacanza.

Questo è il codice che ho scritto. Non da errori semplicemente tiene sempre nascosto il campo Ore_Vacanza.

Option Compare Database

Private Sub Form_Current()
ID_Persona.SetFocus
If ID_Assenza = "Ferie" Then
Me.Ore_Vacanza.Visible = True
Else
Me.Ore_Vacanza.Visible = False
End If
End Sub

Private Sub Form_Load()
If ID_Assenza = "Ferie" Then
Me.Ore_Vacanza.Visible = True
Else
Me.Ore_Vacanza.Visible = False
End If
End Sub

8 Risposte

  • Re: Codice per visualizzare o meno un campo

    Credo serva fare una cosa aggiuntiva... ma è bene spiegare il senso...!

    Le azioni da gestire sono 2:
    1° Quando modifichi la ListBox, di conseguenza se selezioni Ferie farai quello che hai chiesto sul controllo [Ore_Vacanza]
    2° Se scorri i Records, lo stato del controllo [Ore_Vacanza] deve essere aggiornato in base al Valore memorizzato dal Campo associato alla ListBox..., esempio se avevi selezionato Ferie la volta precedente è evidente che, lo stato del Controllo [Ore_Vacanza] va messo a Visible=False, ma non potrai usare l'evento di Modifica(il primo esposto) ma dovrai usare quell'evento che si scatena in Scorrimento Records.

    Nel tuo codice poi SPOSTI INUTILMENTE il focus... NON SERVE, ed il codice è semplificabile così:
    
    Private Sub Form_Current()
        Me.Ore_Vacanza.Visible = ID_Assenza = "Ferie"
    End Sub
    
    Private ID_Assenza_AfterUpdate()
        Me.Ore_Vacanza.Visible = ID_Assenza = "Ferie"
    End Sub
    Trovo tuttavia strano che un Campo Id_Assenza sia di tipo TESTO... quindi forse... quel "Ferie" non è che corrisponde ad un Indice Numerico...?
  • Re: Codice per visualizzare o meno un campo

    @Alex ha scritto:


    Credo serva fare una cosa aggiuntiva... ma è bene spiegare il senso...!

    Le azioni da gestire sono 2:
    1° Quando modifichi la ListBox, di conseguenza se selezioni Ferie farai quello che hai chiesto sul controllo [Ore_Vacanza]
    2° Se scorri i Records, lo stato del controllo [Ore_Vacanza] deve essere aggiornato in base al Valore memorizzato dal Campo associato alla ListBox..., esempio se avevi selezionato Ferie la volta precedente è evidente che, lo stato del Controllo [Ore_Vacanza] va messo a Visible=False, ma non potrai usare l'evento di Modifica(il primo esposto) ma dovrai usare quell'evento che si scatena in Scorrimento Records.

    Nel tuo codice poi SPOSTI INUTILMENTE il focus... NON SERVE, ed il codice è semplificabile così:
    
    Private Sub Form_Current()
        Me.Ore_Vacanza.Visible = ID_Assenza = "Ferie"
    End Sub
    
    Private ID_Assenza_AfterUpdate()
        Me.Ore_Vacanza.Visible = ID_Assenza = "Ferie"
    End Sub
    Trovo tuttavia strano che un Campo Id_Assenza sia di tipo TESTO... quindi forse... quel "Ferie" non è che corrisponde ad un Indice Numerico...?
    Grazie per la semplificazione. Eh sbadatamente non avevo considerato l'indice numerico.
    Mettendo così funziona Me.Ore_Vacanza.Visible = ID_Assenza = "1"

    Grazie
  • Re: Codice per visualizzare o meno un campo

    Se è numerico è meglio usarlo come tale
    
    Me.Ore_Vacanza.Visible = ID_Assenza = 1
  • Re: Codice per visualizzare o meno un campo

    @Alex ha scritto:


    Se è numerico è meglio usarlo come tale
    
    Me.Ore_Vacanza.Visible = ID_Assenza = 1
    Lo penso anche io.
    Ti chiedo un suggerimento.
    Come posso evitare questo errore che si presenta quando devo creare un nuovo record ?
    Credo sia dovuto al fatto che nel momento che credo un nuovo record ID_Assenza non sia """"inizializzato""""

    Errore di run-time '94: Utilizzo non valido di Null
  • Re: Codice per visualizzare o meno un campo

    Ovviamente si, puoi o devi discriminare il Nuovo Record...!
    
    Private Sub Form_Current()
        If Not Me.NewRecord then Me.Ore_Vacanza.Visible = ID_Assenza = 1
    End Sub
  • Re: Codice per visualizzare o meno un campo

    @Alex ha scritto:


    Ovviamente si, puoi o devi discriminare il Nuovo Record...!
    
    Private Sub Form_Current()
        If Not Me.NewRecord then Me.Ore_Vacanza.Visible = ID_Assenza = 1
    End Sub
    Grazie. Probabilmente mi insulterai, crei un IF, poi un THEN e seppur manchi l'END IF, non da errore. Me lo spiegheresti per cortesia?

    Premetto che comprendo la logica di programmazione ma non conosco la "grammatica" molto bene.
  • Re: Codice per visualizzare o meno un campo

    Questa cosa però fa parte di una preparazione di BASE che è indispensabile tu faccia da solo altrimenti è un macello...!

    Se la condizione è solo 1(Vera o Falsa che sia) la si può mettere su una sola riga, e si può usare la forma contratta.
  • Re: Codice per visualizzare o meno un campo

    @Alex ha scritto:


    Questa cosa però fa parte di una preparazione di BASE che è indispensabile tu faccia da solo altrimenti è un macello...!

    Se la condizione è solo 1(Vera o Falsa che sia) la si può mettere su una sola riga, e si può usare la forma contratta.
    Grazie per la spiegazione
Devi accedere o registrarti per scrivere nel forum
8 risposte