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.