1. Usa sempre la proprieta' Value, mai o quasi quella Text.Originariamente inviato da mrc7
ho fatto una maschera access e adesso tramite VBA voglio controllare che i dati immessi non siano già presenti nel db.
Cosi ho creto delle varibili e al click del pulsante(idealmente) carico all'interno di ogni varibile il corrispettivo valore presente nelle text box della maschera....
MA mi dice:"impossibile fare riferimento ad una proprietà o ad un metodo per un controllo a meno che non abbia lo stato attivo".
![]()
![]()
![]()
![]()
Ora io non conosco molto bene access quindi non saprei da dove cominciare...
qlc1 sa aiutarmi???
Anche se si tratta di textbox contenenti testo e non numeri, value va bene. La proprieta' text invece presuppone che il controllo a cui ti riferisci abbia lo stato attivo (dovresti fare un setfocus su di esso prima di richiamarlo). Sostituisci tutti i .Text con .Value e vedrai che il codice girera'. Il problema e' che, da quello che leggo, non riesco a capire in base a cosa tu faccia il controllo. Per questo leggi il punto 2 e 3.
2. Senti ma... Per controllare che i dati non siano gia' immessi nel db non fare un controllo su tutte le textbox, ma solo su quelle che contengono i dati chiave.
3. Soluzione piu' difficile.
Se e' applicabile al tuo software, prova a fare cosi':
All'apertura del form di inserimento/modifica inizia una transazione.
Alla pressione del tasto "conferma" o "ok" sul tuo form (caldamente consigliato per evitare pasticci dell'utente), lancia una piccola routine che vada a interrogare le tabelle del db che sono interessate dalla transazione. Controlla che non esistano records con chiave uguale a quella gia' inserita. Se il controllo ha esito negativo, dai un messaggio di errore e non eseguire la transazione (fai un RollBack). Altrimenti CommitTrans.
Potresti aver bisogno di un form con le textbox non collegate a un 'origine dati.
Se impari ad usare le transazioni per gestire le immissioni dati ti risparmi un bel po' di grattacapi.
Fammi sape'.![]()