Bloccare avanzamento se un campo è null

di il
7 risposte

Bloccare avanzamento se un campo è null

Buongiorno,

ho una maschera con un campo data che è obbligatorio compilare. Nella tabella è richiesto, nella maschera ha questo codice:

Private Sub data_attivita_Exit(Cancel As Integer)
 With Me.data_attivita
    If Len(.Value & vbNullString) = 0 Then
    
       MsgBox "Data obbligatoria! ", vbCritical, "Data attività"
   
       Me.Undo
       Me.data_attivita.SetFocus
       
     End If

 End With
End Sub

All'apertura della maschera il focus è su questo campo, quindi se esco senza compilarlo mi dà giustamente errore. Il mio problema è che anche se mi dà errore comunque esegue l'uscita e va nel campo successivo, invece vorrei che rimanesse dov'è finche non si compila il campo. Quale altra istruzione servirebbe?

grazie

7 Risposte

  • Re: Bloccare avanzamento se un campo è null

    Io ho fatto una prova/accrocchio, forse poco elegante, ma funziona. Dopo

    Me!data_attivita.SetFocus
    Me!NomeCampoSuccessivo.SetFocus
    Me!data_attivita.SetFocus

    molto probabilmente puoi togliere anche il primo rigo. Me.Undo è superfluo, puoi toglierlo.

  • Re: Bloccare avanzamento se un campo è null

    Perfetto! Funziona Ma mi potete spiegare l'istruzione Me.Undo cosa serve effettivamente. Ha senso metterla o no? Grazie

  • Re: Bloccare avanzamento se un campo è null

    Penso che Me.Undo non si usa in questo contesto. Toglilo.

  • Re: Bloccare avanzamento se un campo è null

    Hai provato a semplificare le cose usando quello che Access mette a disposizione…?

    ValidationRoules…!

    https://support.microsoft.com/en-us/office/restrict-data-input-by-using-validation-rules-b91c6b15-bcd3-42c1-90bf-e3a0272e988d

  • Re: Bloccare avanzamento se un campo è null

    20/10/2024 - Lucky56 ha scritto:


    Buongiorno,

    ho una maschera con un campo data che è obbligatorio compilare. Nella tabella è richiesto, nella maschera ha questo codice:

    Private Sub data_attivita_Exit(Cancel As Integer)
     With Me.data_attivita
        If Len(.Value & vbNullString) = 0 Then
        
           MsgBox "Data obbligatoria! ", vbCritical, "Data attività"
       
           Me.Undo
           Me.data_attivita.SetFocus
           
         End If

     End With
    End Sub

    All'apertura della maschera il focus è su questo campo, quindi se esco senza compilarlo mi dà giustamente errore. Il mio problema è che anche se mi dà errore comunque esegue l'uscita e va nel campo successivo, invece vorrei che rimanesse dov'è finche non si compila il campo. Quale altra istruzione servirebbe?

    grazie

    Semplicemente metti il codice solo alla convalida di quello che devi fare. Se data ‘’ mandi il messaggio data obbligatoria e muovi il focus sul controllo alla pressione di om o conferma rifai il controllo. Così se annulli invece di confermare non devi scrivere i campi obbligatori fino alla fine.

    Basta un solo controllo alla conferma non ad ogni uscita del controllo. Se hai 30 controlli di quel tipo se apri per errore devi compilare tutti i campi?

  • Re: Bloccare avanzamento se un campo è null

    Ho usato le regole di validazione dei controlli. grazie

  • Re: Bloccare avanzamento se un campo è null

    Le cose semplici funzionano sempre e meglio.

Devi accedere o registrarti per scrivere nel forum
7 risposte