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.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→