Fonte: http://digilander.libero.it/ballardinig/dispense.htm
ESERCIZI GRADUALI IN ACCESS 2007 (BETA 2) - TIPO PROBLEM SOLVING
0. CREAZIONE DI UN DATABASE.
[Riferimento: dispensa capitolo 0]
Creare un nuovo database di nome FATTURAZ. Chiuderlo e riaprilo.
1. LE TABELLE.
[Riferimento: dispensa capitolo 1]
1. Creare/caricare/aggiornare una tabella Clienti con i dati identificativi dei vari clienti (identificati da un
codice).
2. Creare/caricare/aggiornare una tabella Fatture con i dati delle fatture (ogni fattura è identificata da un
numero ed associata ad un cliente).
3. Creare/caricare/aggiornare una tabella Magazzini con i dati dei magazzini (ogni magazzino è identificato
da un codice).
4. Creare/caricare/aggiornare una tabella Prodotti con i dati dei prodotti (ogni prodotto è identificato dal
codice del magazzino di appartenenza e da un proprio codice identificativo; tra le informazioni deve essere
presente il prezzo unitario).
5. Creare/caricare/aggiornare una tabella RigheFatt con i dati delle righe delle fatture (ogni riga di fattura è
identificata dal numero della fattura di appartenenza e da un numero di riga all’interno della fattura e contiene
il codice di magazzino, il codice di articolo all’interno del magazzino e la quantità di merce relativa).
6. Creare/caricare/aggiornare una tabella AltriDatiCli con dati aggiuntivi sui clienti (es. Partita IVA, Codice
Fiscale, ... non previsti in precedenza; ogni cliente è identificato dal suo codice).
Per ogni tabella costruire anche gli indici opportuni e definire l’opportuna chiave primaria (che deve essere
univoca).
Produrre uno stampato del contenuto di ogni tabella alla fine.
2. LE RELAZIONI.
[Riferimento: dispensa capitolo 2]
Costruire le relazioni tra le precedenti 6 tabelle imponendo dove opportuno l’integrità referenziale.
3. LE QUERY (VISTE).
[Riferimento: dispensa capitolo 3]
1. Creare/visualizzare una query QFatture che contenga dati del cliente, della fattura, della riga di fattura per
ogni riga di fattura. La query dovrà essere ordinata per cliente, a parità di cliente per fattura, a parità di
fattura per numero di riga. La query dovrà contenere anche l’importo di ogni riga di fattura.
2. Creare/visualizzare una query QFattConSomma che contenga dati del cliente, della fattura, e l’importo
totale per ogni fattura. La query dovrà essere ordinata per cliente, a parità di cliente per fattura.
3. Creare/visualizzare una query QImpoClienti che contenga dati del cliente e l’importo totale del fatturato per
ogni cliente. La query dovrà essere ordinata per cliente.
4. Creare/visualizzare una query QueryCli che contenga dati dei clienti che hanno anagrafica che inizia con
una certa stringa fissata e che hanno codice minore o uguale di un certo valore fissato. La query dovrà
essere ordinata per cliente.
5. Creare/visualizzare una query QFattureFino che contenga i dati di ogni fattura che abbia data inferiore o
uguale ad una certa data fissata o comunque che appartenga ad un certo cliente fissato. La query dovrà
essere ordinata per fattura. NB Le date vanno racchiuse tra simboli # (es. #21/10/99#).
6. Creare/visualizzare una query QFattureFiltro che contenga dati del cliente, della fattura, della riga di fattura
per ogni riga di fattura. La query dovrà però mostrare le sole righe in cui il codice cliente stia compreso tra
due valori selezionati ed in cui il numero di riga della fattura sia più piccolo del numero di fattura. La query
dovrà essere ordinata per cliente, a parità di cliente per fattura, a parità di fattura per numero di riga. La
query dovrà contenere anche l’importo di ogni riga di fattura selezionata.
7. Creare/visualizzare una query QRigheFatt che contenga dati della fattura, della riga di fattura per ogni riga
di fattura. La query dovrà essere ordinata per fattura, a parità di fattura per numero di riga. La query dovrà
contenere anche l’importo di ogni riga di fattura.
Produrre uno stampato del contenuto di ogni query alla fine.
4. LE QUERY SQL.
[Riferimento: dispensa capitolo 4]
1. Creare/visualizzare una query SQL QFattureClienti che contenga tutti i dati del cliente, tutti i dati della
fattura per ogni fattura. La query dovrà essere ordinata per cliente, a parità di cliente per fattura.
2. Creare/visualizzare una query SQL QImportoMax che contenga l’anagrafica del/dei cliente/i che hanno
(almeno un) importo di riga di fattura maggiore o uguale di ogni altro nel database.
3. Creare/visualizzare una query SQL QImportoMin che contenga l’anagrafica del/dei cliente/i che hanno
(almeno un) importo di riga di fattura minore o uguale di ogni altro nel database. In questo caso usare la
funzione di aggregazione MIN.
4. Creare/visualizzare una query SQL QMaxPerCliente che contenga i dati del cliente, della fattura e l’importo
della riga che risulta massimo (tra tutte le fatture di quel cliente) per ogni cliente.
5. Creare/visualizzare una query SQL QMaxFattPerCli che contenga i dati del cliente, della fattura e l’importo
totale della fattura che risulta massimo (tra tutte le fatture di quel cliente) per ogni cliente.
6. Creare/eseguire una query SQL di inserimento QInserimento che consenta di inserire un cliente fissato.
7. Creare/eseguire una query SQL di inserimento QInserimento1 che consenta di inserire un duplicato di tutti
clienti esistenti con codice che però (per evitare errori di chiave) viene calcolato pari a max+codice attuale
(dove max è una costante che indica il massimo codice attualmente presente).
8. Creare/eseguire una query SQL di aggiornamento QAggiornamento che consenta di fissare anagrafica ed
indirizzo di ogni cliente ad una certa stringa costante per tutti i clienti con codice maggiore di un certo valore
fissato.
9. Creare/eseguire una query SQL di cancellazione QCancellazione che consenta di cancellare tutti clienti
che hanno una certa anagrafica.
10.Creare/eseguire una query SQL di creazione tabella QCreazione che consenta di creare una tabella FlTmp
con un campo testo di lunghezza 10 ed un campo intero lungo.
Produrre uno stampato del contenuto di ogni query (per cui sia sensata la stampa) alla fine. Stampare
anche il testo della query SQL creata.
5. LE MASCHERE.
[Riferimento: dispensa capitolo 5]
1. Creare/usare una maschera (scheda) SClienti1 che consenta di visualizzare / aggiornare i dati dei clienti in
forma di “maschere continue” (“layout tabulare”).
2. Creare/usare una maschera (scheda) SClienti2 che consenta di visualizzare / aggiornare i dati dei clienti in
forma di “maschera singola” (“layout a colonne”).
3. Creare/usare una maschera (scheda) SFatture che consenta di visualizzare / aggiornare i dati delle fatture
in forma di “maschere continue” (“layout tabulare”).
4. Creare/usare una maschera (scheda) SClienti3 che consenta di visualizzare / aggiornare i dati dei clienti in
forma di “maschera singola” (“layout a colonne”). Sulla maschera aggiungere in autocomposizione un
bottone per aprire la maschera SFatture e visualizzare però solo le fatture del cliente attuale.
5. Creare/usare una maschera (scheda) SAssegnazFatture che consenta visualizzare e/o aggiornare i dati
delle fatture in forma di “maschera singola” (“layout a colonne”). Tale maschera dovrà però consentire la
scelta del cliente a cui associare la fattura attraverso un opportuno combobox o una opportuna listbox.
6. Creare/usare una maschera (scheda) SClientiFatture1 che consenta visualizzare e/o aggiornare la
seguente situazione: i dati di un cliente, una sottomaschera con le fatture di quel cliente che però vengono
reperite dalla query che seleziona solo le fatture fino ad una certa data fissata. Suggerimento: usare
l’autocomposizione.
7. Creare/usare una maschera (scheda) SClientiFatture che consenta visualizzare e/o aggiornare la seguente
situazione: i dati di un cliente, una sottomaschera con le fatture di quel cliente, una sottomaschera con le
righe della fattura attualmente selezionata comprensive dell’importo della riga. Sulla maschera in ogni istante
comparirà anche il totale della fattura attualmente selezionata.
Produrre uno stampato di un caso prova significativo per ogni maschera (scheda).
6. I REPORT (LE STAMPE).
[Riferimento: dispensa capitolo 6]
1. Creare/usare un report RClienti1 che consenta visualizzare e/o stampare i dati dei clienti in forma di
“Report standard: a colonne” (autocomposizione).
2. Creare/usare un report RClienti2 che consenta visualizzare e/o stampare i dati dei clienti in forma “Report
standard: tabulare” (autocomposizione).
3. Creare/usare un report RFatture che consenta visualizzare e/o stampare i dati seguenti: all’inizio il totale
generale delle fatture; per ogni cliente i dati identificativi e sotto l’elenco delle fatture e sotto ogni fattura
l’elenco delle righe di fattura. Ogni riga di fattura dovrà contenere tutti i dati significativi (compreso l’importo).
Dovranno essere evidenziati alla fine di ogni fattura il totale di fattura ed alla fine di ogni cliente il totale del
fatturato del cliente. E’ richiesta una interruzione di pagina dopo ogni cliente.
4. Creare/usare un report RFattColonna che consenta visualizzare e/o stampare i dati seguenti: per ogni
cliente i dati identificativi e sotto l’elenco delle fatture e sotto ogni fattura l’elenco delle righe di fattura. E’
richiesto che i dati vengano disposti sul foglio in almeno tre colonne ed è richiesta una interruzione di
colonna dopo ogni cliente.
Produrre uno stampato di un caso prova significativo per ogni report.
7. LA PROGRAMMAZIONE IN ACCESS - VBA.
[Riferimento: dispensa capitolo 7]
1.
Creare/usare una maschera (scheda) S_VBA1 che consenta, relativamente alla tabella AltriDatiCli
(ordinata usando un indice), di gestirla attraverso un “menù di pulsanti” che consentano di:
1.1.
Inizializzare la maschera mostrando il primo record
1.2.
Passare al prossimo record
1.3.
Aggiornare il record corrente
1.4.
Inserire un nuovo record
1.5.
Ricercare un certo record
1.6.
Cancellare il record corrente
1.7.
“Pulire” la maschera
1.8.
Mostrare il record corrente
1.9.
Uscire dalla maschera
2.
Creare/usare una maschera (scheda) S_VBA2 che consenta di:
2.1.
Mostrare i valori selezionati in una listbox ed in un combo box della scheda (non associati a
tabelle/query)
2.2.
Aggiungere un valore simultaneamente alla listbox ed al combo box (in fondo)
2.3.
Mostrare il valore attualmente selezionato di una serie di checkbox e option button disposti sulla
maschera
3.
Creare/usare una maschera (scheda) S_VBA3 che consenta di:
3.1.
Mostrare i valori selezionati in una listbox ed in un combo box della scheda (associati a
tabelle/query da cui traggono i loro valori)
3.2.
Aggiungere un valore simultaneamente alla listbox ed al combo box
4.
Creare/usare una maschera (scheda) S_VBA5 che consenta visualizzare e/o aggiornare i dati dei
clienti; tramite un bottone si accede alla maschera S_VBA51 che consente di visualizzare e/o
aggiornare i dati delle fatture del cliente attuale; tramite un bottone si accede alla maschera S_VBA52
che consente di visualizzare e/o aggiornare i dati delle righe della fattura attuale. Sulla maschera delle
righe di fattura (S_VBA52) si vuole anche visualizzare il totale di fattura. Suggerimento: usare la
programmazione in VBA nelle maschere e sottomaschere.
5.
6.
7.
Creare/usare una maschera (scheda) S_VBA6 che consenta visualizzare e/o aggiornare la seguente
situazione: i dati di un cliente, una sottomaschera con le fatture di quel cliente, una sottomaschera con
le righe della fattura attualmente selezionata comprensive dell’importo della riga. Sulla maschera in ogni
istante comparirà anche il totale della fattura attualmente selezionata. Suggerimento: la
sincronizzazione tra le due sottomaschere e con la maschera principale viene mantenuto attraverso la
programmazione in VBA nelle maschere e sottomaschere: occorre agire sull’evento “su corrente” della
maschera principale e della maschera delle fatture, inoltre per aggirare alcuni problemi implementativi
occorre usare anche un timer sulla maschera principale e lo scambio di informazioni tramite la proprietà
tag.
Creare/usare una maschera (scheda) SRFatture che consenta di visualizzare / stampare i dati delle
fatture di un cliente indicato usando il report RFatture e filtrando i record in base al codice cliente.
Suggerimento: usare l’opportuna opzione dell’istruzione DoCmd.OpenReport.
Creare/usare una maschera (scheda) S_VBA7 che consenta di visualizzare / stampare i dati delle
fatture di un cliente indicato usando il report RFatture1 (che è una copia, che poi dovrà essere
modificata, del report RFatture) e filtrando i record in base al codice cliente. Si dovrà prevedere la
possibilità di cambiare il titolo del report e la possibilità di invertire l’ordine delle righe di fattura.
Suggerimento: per filtrare i record in base al codice cliente non usare l’opportuna opzione dell’istruzione
DoCmd.OpenReport ma usare solo la normale programmazione VBA come per gli altri aspetti del
problema.
Produrre: stampato delle maschere, elenco eventi, analisi eventi, codifica, un caso prova significativo
per ogni esercizio.
In conclusione fare in modo che all’atto del caricamento del database venga aperta una certa maschera (quella
che volete).
8. LE PRINCIPALI VOCI DI MENU’.
[Riferimento: dispensa capitolo 8]
• Importare la tabella Clienti all’interno di Word e stamparla.
• Usando la voce “Unisci a MsWord” collegare i dati della tabella Clienti ad un documento Word in modo da
stampare: 1. lettere “tipo”; 2. un “catalogo” (elenco).
• Usando la voce “Analizza con MsExcel” importare la query QFatture all’interno di Excel per successive
elaborazioni. In Excel si potranno applicare varie operazioni interessanti: filtro, tabella Pivot, ecc. ecc.
• Compattare il database corrente eliminando lo spazio sprecato e così aumentando le prestazioni.
Produrre stampati la dove significativo.
10. GENERAZIONE DI PAGINE HTML PER LA VISUALIZZAZIONE DI DATI TRAMITE REPORT.
[Riferimento: dispensa capitolo 10]
1. Generare una pagina HTML per visualizzare i dati del report RFatture.
Alla fine produrre uno stampato della pagina da Internet Explorer.