Newsgroup: it.comp.lang.visual-basic
Titolo: Convalida dati

Ciao a tutti,
scusate la domanda ma volevo chiedervi una cosa banale :
Qual'è il metodo + usato per il controllo validità dei campi ? Ovvero dopo
l'evento change su singolo campo con il metodo validate ? Con un command
button a livello di form dopo aver segnato di un altro colore i campi
obbligatori?
Cosa usano la maggior parte degli applicativi in vb6 ?
Grazie mille a tutti.
Ronny.
 
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Beh in genere nelle applicazioni in cui posso creare un pulsante 
"SALVA", al click su questo pulsante eseguo una serie di controlli sulla 
validitŕ dei dati.
1 - Le date devono essere scritte nel formato gg/mm/aaaa, possibilmente 
usando un controllo datetime (cosě mi tolgo dagli impicci)
2 - I numeri inseriti devono essere NUMERI (nelle mie applicazioni uso 
sempre numeri interi, ancora non ho avuto modo di usare numeri decimali) 
quindi mi sono costruito una funzione IsNumber(ByVal S As String) che mi 
restituisce vero SOLO se la stringa passata č composta da cifre.
3 - Le informazioni che nel DB rappresentano chiave primaria (vedi 
Codice Fiscale) devono essere VALIDE (e qui uso funzioni apposite).
In pratica il codice sembra piů o meno cosě:
Private Sub cmdSalva_Click()
Dim DatiValidi As Boolean
    DatiValidi = True
    If dtDataFine.Value > dtDataInizio.Value Then DatiValidi = False
    If Not IsNumeric(txtNumero.Text) Then DatiValidi = False
    If ControlloCF(txtCodiceFiscale.Text) = False Then DatiValidi = False
    ...
    If DatiValidi Then
      ...
      Connessione al db
      InizioTransizione
        ....
      If ErroriNelDB Then
         RollBack
         MsgBox "Errore nel salvataggio: " & DescrizioneErroreDB
      Else
         Commit
      End If
      ...
    Else
      MsgBox "I dati non sono validi bla bla bla"
    End If
End Sub
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello...
(A. Celentano)
Per rispondermi in privato, prima togli l'immondizia dalla testa.

Ronny.
dipende dal tipo di campo, suppongoz
se il form lo lanci da un tasto di invio, basta che la funzione di controllo
la lanci da li, onclick emmocontrollo
--
     _=_      
   q(-_-)p      SCIRIO - 100% COMMERCIALE
    _) (_       
http://scirio.altervista.org
 
   /__/  \           
 _(<_   / )_    "Ghiro spiritualez"     
(__\_\_|_/__)        

Insomma l'evento Validate e annessi non lo usa proprio nessuno?
Io avevo provato a cimentarmi ma sinceramente sono tornato a metodi come 
quelli che avete descritto voi..
Confermate questa mia sensazione? ..o siamo solo noi tre a fare cosě?
Ciao,
    Diego 

 Insomma l'evento Validate e annessi non lo usa proprio nessuno?
Io a volte sě. Ad esempio quando ho un textbox con annesso controllo UpDown e
voglio segnalare subito se l'utente immette un valore fuori dal range ammesso,
non consentendogli di abbandonare il controllo finché non ha inserito un valore
giusto.
    Private Sub txtValue_Validate(Cancel As Boolean)
        Select Case Val(txtValue.Text)
        Case Is > udValue.Max, Is < udValue.Min
            MsgBox "Valore non consentito!", vbExclamation, "Errore"
            txtValue.Text = CStr(udValue.Value)
            Cancel = True
        End Select
    End Sub
Bye
Raf

    Diego
Confermo la tua soluzione. Preferisco sempre una validazione a fine 
schermata perché trovo estremamente antipatiche le applicazioni che non ti 
lasciano uscire da un controllo finché non immetti un valore valido. Magari 
l'utente vuole solo andare a fare "copia" su un'altro controllo della form, 
e tu lo obblighi a scrivere tutto a mano. Fra l'altro molte verifiche fatte 
sui controlli sono inefficaci se l'utente incolla del testo anziché 
scriverlo.
[OT] Per lo stesso motivo quando mi trovo davanti ad un ambiente VB appena 
installato, la prima cosa che faccio è andare su Opzioni e togliere la check 
del "Controllo automatico sintassi", che mi manda una Msgbox se lascio una 
riga di codice non corretta (mi sta bene che diventi rossa, ma non voglio 
Msgbox !). Gia che ci sono metto pure quella sotto (Option Explicit 
automatico).
Ciao
Elef 

Io nei casi più "brillanti" ho messo il controllo anche durante la
digitazione non accettando valori "errati", ad esempio in un numero
decimale non accettavo più di un separatore decimale, se avevo un
numero max di interi e di decimali verificavo la corretta posizione
della virgola ecc. ecc. ecc.
Chiaramente è tutto lavoro che serve solo per aiutare l'operatore a
non sbagliare (a me danno fastidio anche i messaggi di errore di
validazione prima del salvataggio).
Ovviamente bosogna validare i caratteri nel keypress, ma anche il
contenuto del campo nel change (riportando il valore precedete e il
selstart ecc. ecc.).
Io per i numeri mi ero fatto uno usercontrol apposito con tutti i
controlli "sintattici" fatti in automatico e specificato il numero di
interi e decimali come proprietà, se ammetteva valori negativi, ecc.
ecc..
Sul validate generalmente metto i controlli sulla singola informazione
e sul click del salvataggio aggiungo i controlli di coerenza delle
informazioni fra loro.
Piero