ESERCIZI GRADUALI IN ACCESS 2000 - 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 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.
Suggerimento: la sincronizzazione tra le due sottomaschere e con la maschera principale viene
mantenuto attraverso le opportune proprietà degli oggetti sottomaschera (Collega campi Secondari,
Collega campi Master) e tramite l’uso di un campo nascosto nella maschera principale che
contiene un riferimento alla fattura attualmente selezionata. Con le avvertenze riportate sulla
dispensa (uso di query di appoggio) si può fare uso anche della autocomposizione (in maniera
opportuna).
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 i 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 (attraverso il comando Strumenti | Avvio) 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 Strumenti | Collegamenti Office | 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 Strumenti | Collegamenti Office | Analizza con MsExcel importare la query
QFatture all’interno di Excel per successive elaborazioni. In Excel si potranno applicare varie
operazioni interessanti: filtro (menù dati), tabella Pivot (menù dati), ecc. ecc.
 Usando i comandi del menù Sicurezza proteggere un database diverso da quello precedente
(contenente solo una tabella). Creare un utente per ogni componente del gruppo (uno fungerà da
proprietario / amministratore) ed assegnare opportuni privilegi sul database ai diversi utenti. NB
Non cancellare il file System.mdw.
 Compattare il database corrente eliminando lo spazio sprecato e così aumentando le prestazioni.
Produrre stampati la dove significativo.
9. GENERAZIONE DI PAGINE ASP PER LA VISUALIZZAZIONE DI DATI.
[Riferimento: dispensa capitolo 9]
1. Generare una pagina ASP per visualizzare i dati della tabella Clienti. Alla fine produrre uno
stampato della pagina da Internet Explorer.
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.
11. LE DATA ACCESS PAGES.
[Riferimento: dispensa capitolo 11]
1. Generare una Data Access Page (pagina) per aggiornare e visualizzare i dati della tabella Clienti.
Alla fine produrre uno stampato della pagina da Internet Explorer.