PROGRAMMO SUBITO n.14 - Corso di Visual Basic
Questo mese il corso dedicato a Visual Basic da nuovamente spazio ai database. Oggetto di studio sono infatti le modalità che permettono di interrogare una struttura per mezzo del linguaggio SQL Corso di Visual Basic di Maurizio Crespi Spesso si sente parlare dei database come di strutture che devono essere "interrogate", ovvero di oggetti pressoché attivi in grado di restituire delle informazioni a comando. In realtà ciò che è attivo non è il database vero e proprio, bensì il motore che lo gestisce. In questa lezione saranno descritte le modalità con cui è possibile richiedere al modulo responsabile della gestione degli archivi di effettuare delle ricerche e di fornire dei dati organizzati secondo una struttura differente da quella con cui essi sono memorizzati sul disco. La soluzione dell'esercizio proposto nella scorsa lezione Come sempre, prima di introdurre i nuovi argomenti, sarà presentata la soluzione dell'esercizio proposto nella scorsa lezione. Nello numero precedente, è stato descritto un programma in grado di gestire una semplice rubrica telefonica. L'esercizio ne prevede la modifica con l'aggiunta di un pulsante in grado di contare gli elementi dell'archivio contenenti nel campo Cognome una sequenza di caratteri indicata dall'utente. Supponendo di assegnare al nuovo tasto il nome btnConta, il codice che deve essere associato alla sua pressione è il seguente: Private Sub btnConta_Click() Contatore = 0 Per leggere la stringa da cercare si fa uso della casella di testo txtCerca, già presente nell'applicazione in quanto usata dal codice associato alla pressione del tasto di ricerca (btnCerca). Si noti il criterio di selezione, basato sull'operatore LIKE. Per fare in modo che siano trovati tutti i record che contengano la scritta inserita dall'utente in una qualsiasi posizione, occorre introdurre prima e dopo la sequenza da cercare il carattere jolly *. La stringa che costituisce il criterio di ricerca, supponendo di aver digitato nella casella txtCerca la sequenza "Dev", è la seguente: Cognome LIKE "*Dev*" L'asterisco è in grado di sostituire un
numero variabile di caratteri. Ciò significa che sono considerate rispondenti al criterio
tutte le stringhe costituite da una sequenza qualsiasi, eventualmente nulla, seguita dalla
parola "Dev" e da un'altra sequenza qualsiasi, anch'essa eventualmente nulla. Cosa significa "interrogare un database" Un'applicazione che fa uso di un database percepisce tale struttura come attiva, cioè in grado di rispondere a delle richieste. Il programmatore può infatti creare diverse viste dell'archivio, scegliendo solo i campi desiderati e ordinando i record secondo le proprie preferenze. La creazione di una vista non cambia la conformazione fisica del database, bensì comporta la generazione di una struttura logica personalizzata che permette all'applicazione che accede all'archivio di avere di esso una visione adeguata alle proprie esigenze. Una struttura logica di questo tipo prende il nome di dynaset (abbreviazione di dynamic set, ovvero insieme dinamico) e l'operazione che porta alla sua creazione è in genere detta interrogazione del database. e query Un termine che si usa spesso quando si parla di database è costituito dalla parola query. Una query non è altro che un'interrogazione del database, ovvero l'estrazione da esso dell'insieme costituito dai dati in grado di soddisfare delle condizioni specificate. Una query quindi rappresenta un'operazione effettuata sull'archivio secondo delle modalità ben precise, che sono descritte tipicamente per mezzo di una stringa contenente un testo composto da nomi di elementi del database correlati per mezzo di parole chiave appartenenti ad un linguaggio particolare (esso è detto in genere linguaggio di interrogazione o, dagli amanti della lingua inglese, query language). Sulla scena esistono molti linguaggi di questo tipo. In passato, infatti, ogni motore di database tendeva a possedere un proprio linguaggio di interrogazione proprietario. Col passare del tempo, tuttavia, l'esigenza di creare uno standard che permettesse di operare con prodotti diversi riducendo al minimo i costosi corsi di formazione si è sempre più fatta sentire. I moderni strumenti, quindi, sono andati via via adeguandosi alle richieste dell'utenza e oggi, sebbene sopravvivano ancora molti linguaggi proprietari, si può affermare che lo standard mondiale, almeno per alcune categorie di prodotti, sia costituito dallo Structured Query Language (linguaggio strutturato di interrogazione), il cui nome è noto ai più sotto forma di sigla (SQL). I vantaggi principali offerti da questo linguaggio sono rappresentati dalla semplicità, dalla notevole potenza e dalla portabilità da uno strumento di gestione dei database a un altro. Quest'ultima caratteristica non è tuttavia valida al 100%, in quanto spesso si possono osservare delle piccole variazioni fra i linguaggi previsti dai vari prodotti. Il linguaggio SQL Il linguaggio SQL rappresenta uno standard
per tutti i recenti prodotti Microsoft in grado di accedere a dei database. Anche il
motore di gestione degli archivi integrato in Visual Basic non si sottrae questa regola. SELECT <elenco_campi>; Per mezzo dell'istruzione SELECT è
possibile specificare un elenco di campi che costituisce la struttura logica da attribuire
ai record da prelevare dal database. La tabella in cui essi sono contenuti è specificata
dopo la clausola FROM. SELECT Anno, Numero, Utente; Tale sequenza fa sì che il modulo di
accesso ai dati provveda a creare un recordset composto da record caratterizzati dalla
presenza dei soli 3 campi Anno, Numero, Utente. I dati sono prelevati dalla tabella
Automobili. L'applicazione può eseguire qualsiasi operazione sugli elementi del
dynaset, ivi compresa la modifica dei contenuti o la loro cancellazione. Naturalmente, le
informazioni poste nella tabella di provenienza sono costantemente mantenute sincronizzate
con quelle presenti nel dynaset, per cui ogni operazione effettuata sulla struttura logica
influenza l'archivio memorizzato fisicamente sul disco. SELECT <elenco_campi>; dove <condizione> rappresenta un'espressione di confronto valida, definita secondo lo schema <confronto> [And|Or <confronto> And|Or <confonto>] <confronto> è definito come <campo> =|<>|<|>|<=|>=|Like [<valore>|<campo>] oppure <campo> Between <valore> And <valore> L'uso della clausola WHERE implica
la presenza di un criterio di scelta, che è descritto da una o più condizioni combinate
per mezzo dei canonici operatori logici. Si noti che oltre ai tipici operatori di
confronto è possibile utilizzare la parola Between per verificare l'appartenenza
del contenuto di un campo a un preciso intervallo di valori. SELECT Anno, Numero, Utente; I campi indicati nei criteri di selezione non devono necessariamente essere menzionati anche dopo il comando SELECT. Nel caso della query SELECT Anno, Numero, Utente;
La selezione di tutti i campi Talvolta si rivela necessario utilizzare una query per leggere tutti i record che soddisfano una condizione senza che sia necessario variare la loro struttura logica, ovvero rendendo disponibili all'applicazione tutti i campi che li compongono. In questi casi, può risultare scomodo dover fornire l'elenco completo dei campi dopo la parola SELECT, soprattutto se il loro numero è elevato. È allora possibile utilizzare il carattere *, che significa tutti i campi. La stringa crea pertanto una query che provvede a prelevare dal database tutti i campi di tutti i record presenti nella tabella Automobili che sono caratterizzati dal contenere un valore inferiore a 1995 nel campo Anno. Un esempio Si supponga di voler realizzare
un'applicazione in grado di estrarre da un archivio di auto aziendali, contenuto in una
tabella denominata Automobili, l'elenco dei veicoli immatricolati nell'anno 1998.
Si supponga che nell'archivio esistano almeno i campi Anno, Targa, Modello, Sede,
contenenti rispettivamente le informazioni riguardanti l'anno di immatricolazione, la
targa, il modello e la sede alla quale il veicolo è stato assegnato. SELECT Anno, Targa, Modello, Sede; Conclusioni La possibilità di eseguire su un archivio locale o remoto delle query descritte da stringhe in linguaggio SQL fa di Visual Basic uno strumento particolarmente indicato per gestire i database. Non è quindi un caso che il prodotto Microsoft si stia sempre più affermando come uno degli strumenti standard per la realizzazione di software gestionale in ambiente Windows. Data l'importanza dell'argomento, anche la prossima lezione di questo corso sarà dedicata alla realizzazione e alla gestione delle query. Per saperne di più, al lettore non resta che attendere il prossimo numero Bibliografia "Visual Basic 5", McGrawHill, ISBN 88-386-0436-3 Maurizio Crespi si occupa di grafica, multimedialità, amministrazione di reti locali e geografiche, nonché della progettazione e dello sviluppo di applicazioni in C++, Visual Basic, Delphi e Director. Può essere contattato tramite Internet all'indirizzo mcrespi@infomedia.it. VB-IT: per tutti gli sviluppatori VB o aspiranti tali VB-IT e' la mailing list italiana
interamente dedicata a Visual Basic, VBA (Visual Basic for Application) e VBScript.
Se sei uno sviluppatore esperto oppure ti interessa il mondo Visual Basic anche solo per
diletto, troverai VB-IT utilissima! |