Caselle di testo obbligatorie

di il
6 risposte

Caselle di testo obbligatorie

Buonasera a tutti,
scrivo perchè non riesco a risolvere questo problema, vorrei rendere obbligatorio l'inserimento di una casella di casella(Motivazione1) se in un altra casella di testo(DataProroga1) è presente una qualsiasi data.
ho provato con questo codice ma dopo che compare la MsgBox e premo OK compare un errore: Impossibile salvare il record in questo momento
Private Sub Form_BeforeUpdate(Cancel As Integer)

  if Me!DataProroga1.Value <> False Then
     If (Me!Motivazione1.Value & vbNullString) <> True Then
           Cancel = True
           MsgBox "Campo MOTIVAZIONE Obbligatorio..."
           Me!Motivazione1.SetFocus
     End If
     End If
End Sub
Grazie in anticipo per eventuali aiuti

6 Risposte

  • Re: Caselle di testo obbligatorie

    Che succede se cambi l'evento in AfterUpdate?
  • Re: Caselle di testo obbligatorie

    Ciao,

    se lo sposto su dopo aggiornamento, alla chiusura mi compare sempre il MsgBox e quando clicco ok mi chiude la maschera.
  • Re: Caselle di testo obbligatorie

    "alla chiusura" lo stai dicendo adesso. Il quesito iniziale mi sembra un altro e non contempla la chiusura maschera.
  • Re: Caselle di testo obbligatorie

    Scusami, ho sbagliato a non descrivere correttamente il mio problema.
    Vorrei che al momento della chiusura della maschera di inserimento dati, il database non mi permetta di chiudere la maschera se nella casella di testo (DataProroga1) è presente una qualsiasi data perché di conseguenza vorrei che nella casella di testo (motivazione1) fosse compilato.
  • Re: Caselle di testo obbligatorie

    Ale93Lab ha scritto:


    Vorrei che al momento della chiusura della maschera di inserimento dati, il database non mi permetta di chiudere la maschera se nella casella di testo (DataProroga1) è presente una qualsiasi data perché di conseguenza vorrei che nella casella di testo (motivazione1) fosse compilato.
    L'evento giusto è BeforeUpdate della maschera. Quindi lascia stare l'AfterUpdate e il problema sulla chiusura. Il tentativo di scrittura del record in corso si verifica anche quando provi a chiudere la maschera, salvo intervento di altro codice o impostazioni particolari. L'attenzione deve essere posta quindi su
    if Me!DataProroga1.Value <> False
    A meno che tu non voglia davvero verificare se il contenuto di un controllo è "Vero/Falso" (in senso booleano quindi) non far fare al codice conversioni tra tipi a scelta sua (sia ben chiaro, le conversioni implicite hanno regole precise ma è meglio evitarle se possibile). Il Value di una casella di testo può essere Null (infatti è di tipo Variant) o un contenuto alfanumerico qualsiasi.
    Null <> False è Null, né True né False.
    "ABCD" <> False dà errore di conversione tra tipi perché non può convertire un testo in Boolean e confrontarlo con False.
    "0123" <> False è Vero perché la stringa "0123" viene convertita in numero, il corrispondente boolean di 123 è True e quindi True <> False è True.
    Per i controlli casella di testo il sistema giusto è:
    If Len(Me!DataProroga1.Value & vbNullString) = 0 Then
    Ti consiglio di correggere anche la seconda IF seguendo lo stesso principio.
  • Re: Caselle di testo obbligatorie

    Grazie mille per il suggerimento.

    Nel frattempo ho sistemato il problema mettendo come Evento su Scaricamento una macro con la condizione Se, scrivendo questo:

    IsNull([DataProroga1])=Falso And IsNull([Motivazione1])=Vero

    Vorrei però seguire il tuo esempio in modo da capire meglio una corretta compilazione di un codice.

    Grazie mille ancora

    Credo si possa chiudere il topic.
Devi accedere o registrarti per scrivere nel forum
6 risposte