Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Ho creato un database Access che ho protetto con una password, vorrei
creare un form per poter accedere al database attraverso una password.
Come posso fare? Il problema è abbastanza semplice e sarà sviluppato per entrambe le interfacce dati ADO e DAO. Per una spiegazione più approfondita sulle interfacce dati vedi la richiesta per Effettuare una connessione ad un database attraverso ADO.
Il
primo esempio utilizzerà ADO mentre il secondo farà uso
di DAO. Esso si compone di una Label descrittiva, una casella di testo di nome txtPassword con la proprietà PasswordChar impostata a "*", un CommandButton di nome btnApri ed una ListBox di nome lstLibri. Il funzionamento è molto semplice: il nostro database è protetto da una password ed è possibile leggerne i dati soltanto immettendo la password corretta nella casella di testo e premendo il pulsante Apri. Prima di vedere il codice è necessario aggiungere un riferimento a Microsoft ActiveX Data Objects 2.x Library tramite la voce Riferimenti del menu Progetto. Il codice è alquanto semplice:
Alla riga 4 viene dichiarata la variabile Conn di tipo Connection,
che sarà utilizzata per stabilire una connessione con il database.
Alla riga 5 viene dichiarata la variabile RS di tipo Recordset
che servirà per estrarre i dati da una tabella del database. Alla riga 8 viene aggiunta una istruzione di gestione degli errori. In caso di un errore sarà mostrata una finestra di avviso con il messaggio di errore. Questa istruzione è necessaria perché in caso di password errata sarà generato un errore da intercettare.
Alla riga 9 viene scelto il tipo di provider da utilizzare per aprire la connessione al database; l'utilizzo del provider OLEDB migliora la velocità di accesso al database. Il provider scelto è quello Jet per accedere ai database di tipo Access 97 e 2000.
Alla riga 10 impostiamo la password per il database da aprire mediante la proprietà Jet OLEDB:Database Password. Assegniamo ad essa il valore della casella di testo txtPassword. Impostati tali dati sarà possibile aprire la connessione al database "libri.mdb" ed in seguito aprire la tabella LIBRI. Se la password che ha fornito l'utente è corretta il Recordset RS sarà aperto; in caso contrario sarà generato un errore che sarà gestito dalla funzione Err_Handler.
Aperta la tabella sarà elencato il suo contenuto ed inseriti i dati nella ListBox lstLibri. In seguito saranno chiuse e deallocati Recordset e Connessione. Fatto questo alla riga 22 terminerà la Sub.
In caso di un errore sarà mostrata una finestra di messaggio con l'errore generato e saranno deallocati Recordset e Connessione.
Prima di lanciare il programma è bene indicare qual'è la password del database. Eseguiamo il programma e proviamo ad inserire una password errata. Sarà
mostato un messaggio di errore esplicativo. Se invece la password inserita è quella corretta saranno mostrati i titoli dei libri presenti nel database. Poiché abbiamo impostato la proprietà PasswordChar la password non sarà leggibile ma appariranno degli asterischi al posto delle singole lettere. Viene affrontato lo stesso problema utilizzando DAO invece di ADO. È pertanto necessario specificare un riferimento a Microsoft DAO 3.x Object Library dal menu Progetto.
Alla riga 2 viene dichiarata una variabile di tipo Database di
nome DBProtetto, mentre alla riga 3 viene dichiarata una variabile
di nome RS di tipo Recordset.
Alla riga 6 viene aperto il Recordset.
Il resto del codice è identico al precedente. Sarà riempita la ListBox lstLibri con i dati estratti dalla tabella LIBRI; in seguito vengono chiusi e deallocati Recordset e Database. Alle righe 18-20 segue la funzione di gestione degli errori obbligatoria
per rintracciare l'errore generato in caso di password errata. |
DAO sta diventando sempre più raro lasciando il posto al suo "avversario"
ADO più standard ed in grado di supportare quasi ogni tipo di database. Fibia
FBI
|
Torna all'introduzione delle Richieste dei lettori |