Corso di Visual Basic
Un database è una struttura residente su ununità a disco che si caratterizza per la capacità di contenere ingenti quantità di dati organizzati in record. Ciò che fa la differenza fra un database e un normale file ad accesso casuale è la presenza di un modulo, detto generalmente database engine, che permette di effettuare ricerche e inserimenti allinterno dellarchivio in modo semplice e veloce. Esiste quindi un componente che si fa carico di tutta la gestione dei dati, lasciando al programmatore il solo compito di definire i parametri in base ai quali effettuare le operazioni di ricerca. Visual Basic, fin dalle sue origini, ha sempre annoverato fra i suoi punti di forza la capacità di agevolare al massimo lo sviluppo delle applicazioni in grado di gestire dei database. Questa sua caratteristica è andata evolvendosi nel tempo al punto che oggi è uno degli strumenti più utilizzati nel campo della realizzazione di applicazioni gestionali che accedono ad archivi locali o posti su un sistema remoto. Le soluzioni dellesercizio proposto nella scorsa lezione Prima di affrontare lo
studio dei database, è opportuno come sempre effettuare un breve ripasso di ciò che si
è appreso nella scorsa lezione. Lo spunto è dato dalla correzione dellesercizio in
essa proposto, che prevede la modifica del programma descritto come esempio, in grado di
visualizzare un elenco di siti Internet, per consentirgli di gestire la cancellazione
logica e, su richiesta, fisica dei record. Private Type DatiURL Per consentire la cancellazione degli elementi, è necessario modificare la struttura aggiungendole un campo booleano, che è utilizzato per contrassegnare i record logicamente rimossi. La definizione del tipo DatiURL diventa pertanto la seguente: Private Type DatiURL Per consentire la cancellazione del record corrente è necessario modificare la procedura ScriviRecord in modo da tenere conto del nuovo campo. Sub
ScriviRecord(Cancella As Boolean) Si noti che ora accetta un parametro booleano che stabilisce se il record che deve essere scritto sul disco deve essere cancellato logicamente. Il codice da associare alla pressione del pulsante btnCancella, è pertanto il seguente: Private Sub
btnCancella_Click() È inoltre possibile inserire un pulsante in grado di recuperare tutti gli elementi cancellati. La sua pressione deve semplicemente richiamare la procedura Ripristina, composta da un ciclo in grado di leggere tutti i record presenti in archivio e di riscriverli dopo aver modificato il valore del campo Cancellato. Private Sub
Ripristina() La rimozione fisica di tutti gli elementi cancellati può invece avvenire per mezzo della funzione CompattaFile, che provvede a copiare in un nuovo file tutti i record caratterizzati dal contenere il valore False allinterno del campo Cancellato. Dopo essere stato creato, il nuovo file sostituisce quello di partenza. Private Sub
CompattaFile() Il codice completo del programma sopra descritto è riportato nel Listato 1. La sua lunghezza si sarebbe notevolmente ridotta se fosse stato utilizzato un database in luogo del file ad accesso casuale. Nel seguito di questa lezione si vedrà come è possibile fare ciò. I tipi di database utilizzabili da Visual Basic Esistono sul mercato molti
sistemi di gestione dei database. Ognuno di essi è caratterizzato da un diverso modo di
organizzare le informazioni sul disco. Per questo motivo, i file prodotti con tali
strumenti presentano spesso dei formati molto diversi. I prodotti più noti sono Microsoft
Access e FoxPro, nonché Borland DBase e Paradox. La struttura di un database Le informazioni contenute
allinterno di un database, essendo spesso in grande quantità, sono raggruppate in
tabelle, al fine di minimizzare lo spreco di spazio sul disco e di agevolare le operazioni
di ricerca. Ad esempio, supponendo di voler gestire linventario di una libreria,
sarà necessario conoscere per ciascun libro almeno il titolo, lautore,
leditore e lo scaffale che lo contiene. È tuttavia verosimile attendersi che molti
editori abbiano pubblicato più di un libro. Se ad ogni opera è dedicato un record e se
in ognuno di essi sono presenti anche i dati relativi alleditore, è evidente che le
informazioni riguardanti gli editori che hanno pubblicato più di un libro sono
inutilmente duplicate. Lingombro degli archivi non risulta pertanto ottimizzato in
relazione ai dati contenuti. Ciò si traduce in uno spreco di spazio sul disco e in una
maggior quantità di informazioni da leggere durante leffettuazione delle operazioni
di ricerca. Inoltre, la presenza di più copie dello stesso dato può portare a problemi
di inconsistenza dovuti ad errori di inserimento o alla mancata sincronizzazione in caso
di modifica. Per evitare ciò, è conveniente suddividere larchivio in più
strutture, dette tabelle, raggruppando fra loro le informazioni dello stesso tipo. Fra le
tabelle è possibile stabilire delle relazioni. Loggetto data La gestione dei database in
Visual Basic è resa estremamente semplice da uno speciale controllo: loggetto data.
Si tratta di un componente che presenta il caratteristico aspetto illustrato nella Figura
1; come è possibile osservare, è composto da 4 pulsanti, su cui sono presenti i
simboli tipici dei registratori a nastro, posti alle estremità di unetichetta
testuale. La realizzazione di un programma in grado di accedere a un database Si supponga di voler
realizzare unapplicazione analoga a quella dellesercizio proposto nella scorsa
lezione, in grado di visualizzare le informazioni relative a un elenco di siti Internet.
Questa volta, tuttavia, si desidera far uso di un database. Larchivio può essere
creato mediante un prodotto come Microsoft Access. Con questo strumento è possibile
definire una tabella costituita da record aventi due campi di tipo alfanumerico,
denominati Indirizzo e Descrizione. Si supponga di assegnarle il nome TabellaURL
e di salvare il database nel file Web.mdb. Il metodo UpdateControls Lapplicazione creata
consente anche la modifica dei dati presenti in archivio. Se il contenuto di almeno una
delle textbox subisce delle variazioni, la pressione di uno dei pulsanti di cui è dotato
il controllo dbArchivio provoca il salvataggio nel database delle informazioni
modificate. Private Sub
btnRipristina_Click() La proprietà Recordset Linsieme dei record presenti in archivio è identificato dalla proprietà Recordset. Si tratta in sintesi di un oggetto su cui è possibile invocare dei metodi per aggiungere, togliere o modificare gli elementi posti nella base di dati. Laggiunta di un record allarchivio Laggiunta di un nuovo record allarchivio richiede linvocazione del metodo AddNew delloggetto Recordset. Supponendo di voler inserire nel form il pulsante btnNuovoRecord, il codice da associare alla sua pressione è il seguente: Private Sub
btnNuovoRecord_Click() Dopo aver inserito nelle caselle di testo il contenuto del nuovo record, è necessario trasferirlo nel database. Per fare ciò, occorre eseguire il metodo Update delloggetto Recordset. Questa operazione può essere effettuata come risposta alla pressione di un pulsante che si suppone denominato btnAggiorna. Private Sub
btnAggiorna_Click() La cancellazione di un record Anche per cancellare un record è sufficiente utilizzare un semplice metodo delloggetto Recordset. Si tratta del metodo Delete. Volendo inserire nel form un pulsante in grado di rimuovere il record corrente, è necessario scrivere il seguente codice: Private Sub
btnCancella_Click() Un semplice esercizio Per esercitarsi sui concetti esposti, si provi a realizzare un programma in grado di gestire una semplice rubrica telefonica. Conclusioni Luso di un database consente il trattamento di cospicue quantità di informazioni in modo molto semplice e veloce. Per questo motivo, la stragrande maggioranza delle applicazioni gestionali ne fa uso. A questo tipo di strutture, data limportanza che le caratterizza, sarà dedicata anche la prossima lezione. Per agevolarne la comprensione, il lettore è quindi invitato ad esercitarsi sui concetti sopra esposti. Bibliografia "Visual Basic 5", McGrawHill, ISBN 88-386-0436-3. |