Newsgroup: it.comp.appl.access
Titolo: Convalida dati!!

Ciao a tutti,
sto cercando di ottimizzare un db in Access per ciò che riguarda la
convalida dei dati in fase di inserimento!!
In una maschera "M_Principale" ho il campo "data_tel" (che vorrei non
fosse Null and not >now()),e il campo "sesso" (che vorrei fosse solo M
or F)!
Come posso fare?Usare la funzione Msgbox o con macro?
Ovviamente mi servirebbe gentilmente sapere anche come..!!
Grazie mille per l'aiuto
fab

> nella cartelletta Ricerca
Visualizza controllo = Casella combinata
Tipo orgine riga  = Elenco valori
Origine riga = "M";"F"
Colonna associata = 1
Numero colonne = 1
conferma le modifiche alla struttura e già dalla visualizzazione della 
tabella puoi notare che il campo SESSO ti si presenta come una casella 
combinata con soli due valori possibili. Se vuoi propagare questa modifica 
nelle maschere dove usi questo campo, glielo trascini dentro ed è gia pronto 
all'uso.
In genere questo è un metodo valido per tutte quelle scelte che non 
cambieranno mai entro i prossimi cento anni !!
M o F per il Sesso
AM o PM
Lun Mar Mer Gio Ven Sab Dom (questa la si può ricavare con funzioni 
intrinseche in access)
Buoni Cattivi
.... se le stringhe sono lunghe (Buoni o Cattivi)  puoi usare il metodo di 
usare un indice per risparmiare bytes inutili, qualcosa del genere:
"1";"Buoni";"2";"Cattivi";"3";"Assenti !"
naturalmente le colonne della tua pseudo tabella diventano 2 e l'indice 
resta in prima colonna. Se vuoi 'nascondere' l'indice attribuisci alla 
proprietà Larghezza colonne qualcosa tipo : "0 cm;3 cm"
usa la guida per colmare le lacune e buonanotte ;))

Ivan da casa ha scritto:

Intanto grazie per la risposta,ma quello che mi hai suggerito l'avevo
già implementato in fase di struttura!
Non avevo dubbi che avresti scelto l'argomento Sesso dato che è la
cosa che tira di più negli ultimi 2000 anni..;-)
Comunque ritornando al mio problema:ho bisogno di sapere la routine da
inserire nell'evento "Before Update" della maschera Principale per far
apparire un msgbox con un messaggio del tipo:"I dati inseriti nel campo
Data o nel campo SESSO non sono coerenti,Salvare Comunque?" pulsante Si
(Salva il Record) pulsante No (consente di modificare i campi del
record della maschera!!
Spero in un aiuto,in quanto a codice è dura..!!
Ciao Fab

Ciao Fab
... allora sempre per quel che riguarda il sesso ! potresti inserire due 
righe di questo tono:
[...]
If Nz(SESSO) = "" Then
    If MsgBox "I dati inseriti nel campo SESSO non sono coerenti,Salvare 
Comunque?", _
        vbCritical + vbOKCancel _
                        , "CAMPI NON COERENTI !!!") = vbCancel Then
                            Cancel = True : Exit Sub ì**
    End If
End If
[...]
non è testata e potrebbe esserci qualche imprecisione, il campo deve avere 
il nome che gli hai dato tu.
Per quanto riguarda il campo delle date devi usare la meravigliosa funzione 
Between che ti permette di testare se il valore è compreso tra i due limiti, 
qualcosa come
If LaMiaData Not Between (DataInizo And Date()) Then
    If MsgBox "I dati inseriti nel campo DATA non sono coerenti,Salvare 
Comunque?", _
        vbCritical + vbOKCancel _
                        , "CAMPI NON COERENTI !!!") = vbCancel Then
                            Cancel = True : Exit Sub '**
    End If
End If
certmente potresti unire i due confronti, ma avresti meno facilità nella 
gestione successiva. Per esempio potresti rimandare il focus sul campo 
incriminato, obbligando l'utente a rispondere in maniera coerente, quindi 
inserirari :
Cancel = True : SESSO.SetFocus: Exit Sub ?**
spero di averti aperto una piccola strada ...
Ivan