Chiusura maschera se i campi obbligatori sono inseriti

di il
7 risposte

Chiusura maschera se i campi obbligatori sono inseriti

Buona sera,
ho una maschera per aggiungere articoli nel database access nominata " 16_ articoli aggiungi " con un pulsante chiudi
quando in questa maschera uno dei campi (marca, modello, descrizione, note) è vuoto, se clicco sul pulsante chiudi non mi deve far chiudere la maschera ma mi deve dare un messaggio che mi dica che non sono stati compilati tutti i campi, viceversa, me la chiude.
Vi ringrazio

7 Risposte

  • Re: Chiusura maschera se i campi obbligatori sono inseriti

    Hai provato a definire nella tabella associata i campi tutti come obbligatori... a quel punto poi basta una semplice gestione errori su Form_Error.
    Alternativa inserire nei controlli textbox il criterio di validazione e poi sempre da intercettare su Form_Error.

    Altrimenti devi gestire l'evento BeforeInsert/BeforeUpdate e ciclare le textbox associate per verificare la validazione... la.dove non è compilato messaggio e sposti il focus.
  • Re: Chiusura maschera se i campi obbligatori sono inseriti

    Io, nel mio db, faccio così:
    poi non so se sia il modo migliore ma funziona
    if nomecontrollo= null or nomecontrollo="" or .....  then       ' dopo or metti tutti i campi che ritieni siano obbligatori
    msgbox ' imposti il tuo messaggio
    else
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70   'questo se ovviamente vuoi anche salvare le tuo modifiche
    docmd.close
  • Re: Chiusura maschera se i campi obbligatori sono inseriti

    Quel codice va bene se hai 1 o al massimo 2 controlli da testare... altrimenti diventa una coda lunghissima...
  • Re: Chiusura maschera se i campi obbligatori sono inseriti

    Buona sera, per quanto riguarda la risposta di Alex, ho provato direttamente dalla tabella e metterli come campi obbligatori però non voglio limiktare i campi nella tabella, preferisco più lavorare sulle maschere. per quanto riguarda la risposta di Marcdreamer l'ho compilato però praticamente non accade nulla. Ti posto il tuo codice modificato con i campi che utilizzo:

    Private Sub chiudi_Click()
    If marca = Null Or modello = Null Or descrizione = Null Or note = Null Then ' dopo or metti tutti i campi che ritieni siano obbligatori
    MsgBox "NON CI SONO ALTRI ARTICOLI", vbExclamation, "Avviso"
    Else

    DoCmd.Close
    End If
    End Sub
  • Re: Chiusura maschera se i campi obbligatori sono inseriti

    gru ha scritto:


    Buona sera, per quanto riguarda la risposta di Alex, ho provato direttamente dalla tabella e metterli come campi obbligatori però non voglio limiktare i campi nella tabella, preferisco più lavorare sulle maschere. per quanto riguarda la risposta di Marcdreamer l'ho compilato però praticamente non accade nulla. Ti posto il tuo codice modificato con i campi che utilizzo:

    Private Sub chiudi_Click()
    If marca = Null Or modello = Null Or descrizione = Null Or note = Null Then ' dopo or metti tutti i campi che ritieni siano obbligatori
    MsgBox "NON CI SONO ALTRI ARTICOLI", vbExclamation, "Avviso"
    Else

    DoCmd.Close
    End If
    End Sub
    prova a mettere così:
    Private Sub chiudi_Click()
    If isNull(marca) Or isNull(modello) Or isNull(descrizione) Or isNull(note) Then 
    MsgBox "NON CI SONO ALTRI ARTICOLI", vbExclamation, "Avviso"
    Else
    DoCmd.Close
    End If
    End Sub
    verifica anche se i nomi dei campi presenti nella maschera sono proprio questi
  • Re: Chiusura maschera se i campi obbligatori sono inseriti

    gru ha scritto:


    Buona sera, per quanto riguarda la risposta di Alex, ho provato direttamente dalla tabella e metterli come campi obbligatori però non voglio limiktare i campi nella tabella, preferisco più lavorare sulle maschere.
    Prima cosa il ragionamento non sta in piedi dal moemento che poi i controlli in maschera sono associati al Campo nella Tabella...
    Secondo ti ho anche suggerito che, disgiuntamente dalla Tabella puoi indicare il CRITERIO DI VALIDAZIONE sul Controllo nella maschera... cosa ti sfugge...?

    gru ha scritto:


    per quanto riguarda la risposta di Marcdreamer...
    Non usare quel metodo per 16 controlli è un "NON SENSE" tecnico...

    Piuttosto
    
    Private Function CheckAll() As Boolean
    Dim ctl As Access.Control
    FOr each ctl in Me.Controls
       If ctl.ControlSource<>vbNullstring then
           If Len(ctl.Value & vbNullString)=0 then
              MsgBox "Devi compilare il controllo " & ctl.Name
              ctl.SetFocus
              Exit Function
           End If
        End If
    Next
    CheckAll=True
    End FUnction
    Se la Validazione dei controlli Associati non prevede tutti i controlli inserisci nella proprietà TAG dei controlli Oggetto di Verifica una X
    e nel Ciclo invece di controllare il COntrolSource controlli la proprietà TAG
    
    Private Function CheckAll() As Boolean
    Dim ctl As Access.Control
    FOr each ctl in Me.Controls
       If ctl.Tag="X" then
           If Len(ctl.Value & vbNullString)=0 then
              MsgBox "Devi compilare il controllo " & ctl.Name
              ctl.SetFocus
              Exit Function
           End If
        End If
    Next
    CheckAll=True
    End FUnction
    Rifletti bene.
  • Re: Chiusura maschera se i campi obbligatori sono inseriti

    Grazie ragazzi, ci sono riuscito
Devi accedere o registrarti per scrivere nel forum
7 risposte