Valore obbligatorio casella testo su condizione

di il
3 risposte

Valore obbligatorio casella testo su condizione

Non riesco a rendere obbligatorio l'inserimento dati su una casella di testo "Fine_lavorazione_effettiva" in base al valore di altra casella combinata "Id_stato_lavorazione" sulla stessa maschera di inserimento.

Ho provato con il codice seguente su Evento Prima di aggiornare:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Len(Me![Id_stato_lavorazione] & "") = Terminata Then
MsgBox "Il Campo [Fine_lavorazione_effettiva] è obbligatorio!", vbOKOnly, "Attenzione!"
Cancel = True
End If
End Sub

ma non funziona, non riesco a capire come fare.

Grazie

3 Risposte

  • Re: Valore obbligatorio casella testo su condizione

    Manzo ha scritto:


    ma non funziona
    Non funziona perché dà errore? Non funziona perché fa una cosa diversa da quello che ti aspetti?
    Il problema sta qui comunque.

    Manzo ha scritto:


    ...
    If Len(Me![Id_stato_lavorazione] & "") = Terminata Then 
    Len restituisce un numero, la lunghezza di una stringa. Come puoi mettere a confronto un numero con la parola Terminata?
    Attento poi a cosa devi fare: devi solo controllare che sia compilata o devi anche discriminare la compilazione di altre textbox in base al valore che contiene? Il Len scritto in quel modo, quando è superiore a zero, dice solo che è stata compilata. Se poi devi analizzare il valore che contiene devi inserire un'altra If (o Select Case).
    Nota di stile: quando il codice riscontra che non stata compilata una textbox (o è stata compilata con un valore non valido, cambia poco), per agevolare chi deve correggere questa mancanza è meglio spostare il focus su quella textbox con nometextbox.SetFocus.
  • Re: Valore obbligatorio casella testo su condizione

    In effetti quello che ho scritto non può funzionare.
    Quello che mi occorre è che se il valore in [Id_stato_lavorazione] sia "Terminata" l'inserimento della data su [Fine_lavorazione_effettiva] sia obbligatoria.
  • Re: Valore obbligatorio casella testo su condizione

    Manzo ha scritto:


    è che se il valore in [Id_stato_lavorazione] sia "Terminata" l'inserimento della data su [Fine_lavorazione_effettiva] sia obbligatoria.
    Id_stato_lavorazione è numerico o una stringa? Scritto così sembra il caso tipico di valori del tipo
    1 = "Non ho voglia di iniziare"
    2 = "Chi ben inizia è già a metà dell'opera"
    3 = "A metà ci sono davvero"
    4 = "Terminata"
    5 = "Non ne potevo più"
    selezionato tramite combobox (si nota che le ho inventate?).
    In questo caso il confronto non deve essere fatto con la parte descrittiva ma con il relativo codice identificativo. Poi si tratta di mettere due criteri insieme con un AND. Niente di difficile (anche se forse le combinazioni non sono finite qui ma questo risponde alla necessità che hai espresso)
    If Me![Id_stato_lavorazione] = 3 AND Len(Me![Fine_Lavorazione_effettiva] & vbNullString) = 0 Then
    'messaggio di avviso e SetFocus su Fine_Lavorazione_effettiva
    Id_stato_lavorazione può essere null? Se sì bisogna cambiare qualcosa.
Devi accedere o registrarti per scrivere nel forum
3 risposte