Parametri nel Linguaggio SQL

Prima di vedere alcuni casi reali di utilizzo delle nozioni fatte negli articoli precedenti, occorre fare ancora un po’ di teoria sui parametri nelle query, sulla formattazione delle date nelle query e l’uso delle parentesi quadre nei nomi di campi e tabelle. I parametri non sono altro che delle variabili a cui posso assegnare dei valori e vanno inseriti prima della query

PARAMETERS paramNome Text ( 100 ), paramData DateTime, ….;
SELECT * FROM Clienti WHERE Nome LIKE paramNome AND DataNascita = paramData ….

Prima si inserisce il nome del parametro e poi il tipo, Text per il testo e fra parentesi tonde la lunghezza massima del valore del parametro o DateTime per le date, a fine istruzione si mette il punto e virgola per inserire la query vera e propria, difatti il punto e virgola serve in SQL per terminare un’istruzione ed iniziarne una nuova. In Access inserire i parametri è semplicissimo, basta selezionare, in visualizzazione struttura, query –> Parametri ed inserire nome e tipo, successivamente utilizzare questi nomi nel WHERE o HAVING della query.
Ogni volta che si devono fare dei filtri con il tipo Data occorre prestare attenzione alla lingua del motore Jet, se è in Inglese bisogna formattare le date “Mese/Giorno/Anno” all’Inglese per l’appunto o se il motore è Italiano “Giorno/Mese/Anno”, inoltre come per le stringhe ( campi di testo ) utilizzavamo i doppi apici o gli apici singoli per le date occorre utilizzare il cancelletto.

SELECT * FROM Clienti WHERE DataNascita = #12/11/1975#

In questo specifico caso prendo tutti i campi dei clienti che hanno la data di nascita uguale a quella data. Con le date si possono anche utilizzare il < o > o <= o >=, ma per intervalli di date o numeri è meglio utilizzare BETWEEN.

SELECT * FROM Clienti WHERE DataNascita BETWEEN #01/01/1975# AND #31/12/1975#

In questo esempio troviamo tutti i campi dei clienti che sono nati nell’anno 1975.
L’uso delle parentesi quadre lo dobbiamo fare se nel nome del campo o tabella c’è uno o più spazi, per esempio

SELECT Data di Nascita FROM Clienti WHERE …

è sbagliato e bisogna scrivere

SELECT [Data di Nascita] FROM Clienti WHERE…

Infine se stiamo eseguendo un JOIN in 2 o più tabelle con nomi di campi uguali per distinguere tra i 2 dobbiamo utilizzare la nozione punto

Tabella.Campo

Per fare pratica, che ritengo a questo punto la cosa migliore da fare per imparare a programmare una query, vi consiglio di scaricare i sorgenti di MerciGest e più in particolare le 6 query all’interno per trovare i totali del magazzino e studiarsele bene, come questa per esempio:

PARAMETERS DataInit DateTime, DataEnd DateTime, Articolo Text ( 255 );
SELECT Articoli.Matricola, Articoli.Descrizione, UnMis.Sigla, Sum(SottoCarichi.Qt) AS SommaDiQt, Articoli.CodBarre, Sum(SottoCarichi.Prezzo) AS SommaDiPrezzo
FROM Carichi LEFT JOIN ((SottoCarichi LEFT JOIN Articoli ON SottoCarichi.IDArticolo = Articoli.IDArticolo) LEFT JOIN UnMis ON Articoli.IDUM = UnMis.IDUM) ON Carichi.IDCarico = SottoCarichi.IDCarico
WHERE Carichi.Data Between DataInit And DataEnd
GROUP BY Articoli.Matricola, Articoli.Descrizione, UnMis.Sigla, Articoli.CodBarre
HAVING Articoli.Matricola Like Articolo
ORDER BY Articoli.Descrizione;

Non lasciatevi prendere dallo sconforto e studiate istruzione per istruzione quello che c’è scritto perché lo abbiamo spiegato negli articoli precedenti. Se ci fossero poi dei problemi potete postarmeli nel nostro forum.
La prossima volta prenderemo questa query e la spiegheremo passo passo in modo che possiate poi creare le vostre query autonomamente e poi programmarle graficamente con Access è anche abbastanza semplice.

<< Lezione Precedente – Lezione Successiva >>

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Database e contrassegnata con , . Contrassegna il permalink.