Controllo su campi obbligatori, salvataggio e uscita

di il
6 risposte

Controllo su campi obbligatori, salvataggio e uscita

Salve. Ho creato una tabella "articoli" con 2 campi obbligatori:
"categoria" che è una casella combinata con valori fissi, da scegliere a tendina
e "articolo", campo da compilare con testo

Creata la maschera di inserimento dati, ho messo un tasto click che salva ed esce, ma se viene lasciato un campo vuoto, deve avvisare.

Questo è il codice che ho trovato su internet e usato per il tasto, ma non funziona come dovrebbe: non compare il messaggio del campo sbagliato. Cosa dovrei cambiare?
Private Sub Salvare_click()
    Dim ctrl As Control
    If MsgBox("Vuoi salvare l'aggiunta?", vbYesNo, "Salvare?") = vbNo Then
          Cancel = True
          DoCmd.Close acForm, Me.Name
    Else
         For Each ctrl In Me.Controls
                  If ctrl.Tag = "Obbligatorio" Then
                           If Len(ctrl.Value & "") = 0 Then
                                    If MsgBox("Vuoi compilare la casella " & ctrl.Name & " oppure uscire...?", vbYesCancel) = vbCancel Then
                                          Cancel = True
                                          DoCmd.Close acForm, Me.Name
                                    Else
                                          ctrl.SetFocus
                                     End If
                           End If
                  End If
         Next
    End If
End Sub

6 Risposte

  • Re: Controllo su campi obbligatori, salvataggio e uscita

    Non si comprende se volevi rendere obbligatorio un valore in un campo e, allora, avresti dovuto impostarlo come Richiesto=Sì nella tabella:
    https://support.office.com/it-it/article/Rendere-obbligatorio-un-valore-in-un-campo-d6bf6ff6-d653-48ef-b484-54a33c36f6c6
    http://www.gerardopaolillo.it/inserimento-obbligatorio-in-access-2007.html

    oppure vuoi operare con le Tag Property nella maschera (come semprerebbe dal codice) ed in tal caso leggi:

    http://accessdatabasetutorial.com/2011/10/14/microsoft-access-database-using-the-tag-property-in-microsoft-access-forms/
  • Re: Controllo su campi obbligatori, salvataggio e uscita

    Ciao Willy55, i campi sono obbligatori, sono richiesti, e in struttura tabella, c'è richiesto=si

    In maschera, quando si compila solo 1 campo e si tenta di uscire, di default esce la finestrella di access che avvisa del campo obbligatorio. Ecco, con il codice VBA vorrei ricreare la finestrella, ma con un mio messaggio personale, e non quello di default, poichè il nome del campo è incomprensibile agli altri che lo usano.
    Ho messo un pulsante che faccia l'operazione di salvataggio e uscita dalla maschera (se tutto compilato). Ora manca la parte in cui si compila solo 1 campo e risponde errore.
  • Re: Controllo su campi obbligatori, salvataggio e uscita

    Scusa, ma se hai già definito i campi come Obbligatori in JET(nella Tabella) perchè ora fai tutto questo lavoro per prevenire che il Motore del Database faccia il suo lavoro...?

    Non conviene che sfrutti le impostazioni che hai fatto intercettando l'errore di FORM e gestendolo...?
     
    Option Compare Database
    Option Explicit
    
    Private Const ERR_ONETOMANYCONFLICT         As Long = 3101
    Private Const ERR_RELATEDRECORDS1           As Long = 3200
    Private Const ERR_RELATEDRECORDS2           As Long = 3201
    Private Const ERR_REQUIREDDATA              As Long = 3314
    Private Const ERR_DUPLICATEKEY              As Long = 3022
    Private Const ERR_NOCURRRECFOUND            As Long = 3021
    Private Const ERR_DATATYPE                  As Long = 2113
    Private Const ERR_INPUTMASK                 As Long = 2279
    Private Const ERR_NULLKEY                   As Long = 3058
    Private Const ERR_NULLVALUE                 As Long = 3162
    Private Const ERR_ZEROLENGTHSTRING          As Long = 3315
    Private Const ERR_DATAVALIDATION1           As Long = 2107
    Private Const ERR_DATAVALIDATION2           As Long = 3317
    Private Const ERR_ITEMNOTINLIST1            As Long = 2237
    Private Const ERR_ITEMNOTINLIST2            As Long = 2473
     
    Private Sub Form_Error(DataErr As Integer, Response As Integer)
        Const NEXT_MSG = "See next message for details."
    
        Select Case DataErr
                            
            Case ERR_REQUIREDDATA
                MsgBox "Required value missing!" & vbCr & NEXT_MSG, vbInformation, "WARNING"
                Response = acDataErrDisplay
    
            Case ERR_NULLKEY, ERR_NULLVALUE, ERR_ZEROLENGTHSTRING
                MsgBox "Field can not be empty.", vbInformation, "WARNING"
                Response = acDataErrContinue
    
            Case ERR_DUPLICATEKEY
                MsgBox "The value is already in use to " & "create an unique record. Change the value.", vbInformation, "WARNING"
                Response = acDataErrContinue
    
            Case ERR_DATATYPE, ERR_INPUTMASK
                MsgBox "The value has an incorrect data type" & vbCr & "(f.i. text value in a numeric field).", vbInformation, "WARNING"
                Response = acDataErrContinue
                ActiveControl.Undo
                
            Case ERR_DATAVALIDATION1, ERR_DATAVALIDATION2
                'Custom validation rules: show corresponding error message
                MsgBox AccessError(DataErr), vbInformation, "WARNING"
                Response = acDataErrContinue
    
            Case Else
                'Display the default error message
                Response = acDataErrDisplay
        End Select
    
    End Sub
  • Re: Controllo su campi obbligatori, salvataggio e uscita

    Me la sono cavata con una macro. Vi lascio il codice della funzione che ne scaturisce:
    Function ControllaSalvaEsceArticoli()
    On Error GoTo ControllaSalvaEsceArticoli_Err
    
        ' Rendi obbligatorio campo categoria
        If (Eval("[Categoria] Is Null")) Then
            DoCmd.CancelEvent
            Beep
            MsgBox "Occorre inserire un valore nel campo 'Categoria'", vbInformation, "Scelta obbligatoria"
            Exit Function
        End If
        ' Rendi obbligatorio campo articolo
        If (Eval("[Articolo] Is Null")) Then
            DoCmd.CancelEvent
            Beep
            MsgBox "Occorre inserire un valore nel campo 'Articolo'", vbInformation, "Campo obbligatorio"
            Exit Function
        End If
        DoCmd.RunCommand acCmdSaveRecord
        DoCmd.Close acForm, "Articoli"
    
    
    ControllaSalvaEsceArticoli_Exit:
        Exit Function
    
    ControllaSalvaEsceArticoli_Err:
        MsgBox Error$
        Resume ControllaSalvaEsceArticoli_Exit
    
    End Function
  • Re: Controllo su campi obbligatori, salvataggio e uscita

    Non so chi ti abbia insegnato una cosa simile(spero sia un errore)
    
     If (Eval("[Categoria] Is Null")) Then
    ma non si può vedere... vedi tu...
  • Re: Controllo su campi obbligatori, salvataggio e uscita

    Non so Alex, ho schiacciato semplicemente il tasto "converti macro in visual basic" , copiato e incollato qui
Devi accedere o registrarti per scrivere nel forum
6 risposte