indietro

LE QUERY - SECONDA PARTE

Prima di proseguire con altri esempi, mi sembra necessario puntualizzare un aspetto delle Query che finora non abbiamo considerato, cioè la possibilità di rendere variabili gli argomenti delle query. Riprendiamo un esempio visto, limitatamente alla sola query :

  • "SELECT Nominativo FROM Clienti WHERE Città =  'Roma' ;" - seleziona tutti i record dal campo Nominativo dalla tabella Clienti dove il campo Città equivale a Roma.

In questa interrogazione le istruzioni sono scritte nel codice, e se ripetiamo la routine di cui la query farà parte, otterremo sempre lo stesso risultato per quanto riguarda il campo "Città" che è la chiave di selezione. Se volessimo i Nominativi relativi alla città di Milano, dovremmo riscrivere tutta la routine variando il nome della chiave di ricerca ? No, non è necessario, come per tutte le istruzioni in cui una ricerca deve essere resa variabile, anche con le query potremo affidarci agli strumenti che Excel ci mette a disposizione.

Potremo quindi usare una InputBox per reperire il nome della città da usare come chiave di ricerca, oppure una cella del nostro foglio di lavoro, ed assegnando il valore cosi ottenuto ad una variabile da richiamare nella query. Vediamo come, X è il vettore della variabile:

con InputBox:
X = InputBox("Inserisci il Valore da cercare")

Con una cella, esempio la E1
X = Range("E1").Value

In entrambi i casi X sarà uguale al valore (nome digitato), e basterà modificare così la nostra query:

  • "SELECT Nominativo FROM Clienti WHERE Città = '" & X & "';"

A questo punto l'estrazione dei dati diventa variabile in funzione del nome città che di volta in volta sceglieremo. Con lo stesso concetto di affidarci ad una variabile, sarà possibile variare non solo la chiave di selezione, ma anche gli altri argomenti di una query, ad esempio il nome Campo della tabella o la tabella stessa, dal quale estrarre i dati. Attenzione a scrivere sempre esattamente i nomi come sono presenti nel database, altrimenti si genera un errore ed il debugger blocca tutto. Vediamo un esempio in cui si rende variabile la ricerca di un campo:

  • "SELECT * FROM prova WHERE ciccia >=250;" - seleziona tutto dalla tabella "prova" dove il campo "ciccia" è uguale o maggiore di 250.

La stessa query, resa con le variabili:

X = Range("E1").Value  'nella cella E1 scriveremo la cifra che serve da chiave di ricerca
Y = Range("F1").Value 
'nella cella F1 scriveremo il nome del campo della tabella che vogliamo
"SELECT * FROM prova WHERE '" & Y & "' >='" & X & "';"

poichè i campi presenti nella tabella "prova" dell'esempio sono 3 : ciccia, verdura, crema, scrivendo in F1 il nome di uno dei tre campi, potremo variare, con la stessa query, i dati estratti. Ovviamente, ciò che faremo poi sul foglio di lavoro, con i dati così ottenuti (totali, conteggi, percentuali, grafici, ecc.ecc.) dipenderà da ciò che vorremo ottenere e comunque non interessano queste note.

Indicazioni per acquistare libri.

Oltre ai libri specifici per l'apprendimento del linguaggio SQL, sono necessari, per coloro che vogliono avvicinarsi alla programmazione in generale su base VisualBasic, anche libri specifici che introducano a questo linguaggio. Il VBA che è un figlio del VB, da solo non consente di apprendere tutti i concetti generali della programmazione VB, che secondo il mio modesto parere, risulta essere più ampio, ma meno ostico del VBA, e conoscendo un pò di VB, si riesce a digerire meglio il VBA. Nella sezione Libri & Link di questo sito, trovate i nomi di alcune case editrici che pubblicano libri sulla programmazione. Visitate le loro librerie nelle vostre città, o visitate i loro siti, e troverete un'ampia gamma di titoli su questi argomenti. Non fornisco nessun titolo in particolare, in quanto ogni autore ha un proprio modo di presentare gli argomenti, che può cambiare molto tra autore ed autore, per cui ciò che capisco bene io può non andar bene per un'altro pellegrino, e viceversa. Il consiglio che do, non vi fermate ad un solo libro per argomento, ma esaminate ed acquistatene più di uno: non è detto che una trattazione di uno specifico argomento su un libro sia più completa o più comprensibile di un'altro.

Buon lavoro.

prelevato sul sito http://ennius.interfree.it