3. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Riassunto della prima giornata
✔ Microsof Access è un RDBMS con interfaccia grafica che fonde
l'architettura JET a una semplice interfaccia grafica
✔ I campi sono i dati elementari mentre le tabelle raggruppano più campi
(es. rubrica indirizzi: ciascun nominativo è un insieme di più campi)
✔ Le query sono particolari rappresentazioni delle tabelle che riportano
solo le informazioni che rispondono a determinati criteri
✔ La rappresentazione gerarchica delle tabelle è identificato dalle
relazioni.
✔ Le interfacce sono uno strumento per rappresentare i dati in un modo
“user friendly”.
4. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Riassunto della seconda giornata – 1
✔ Esistono componenti standard e componenti avanzati da poter
aggiungere alle interfacce.
✔ Un particolare componente avanzato è identificato dalle sottomaschere.
✔ Una macro corrisponde ad un insieme di operazioni eseguite in
sequenza. È possibile impostare condizioni per il flusso delle
operazioni.
✔ Le maschere di Microsoft Access sono orientate agli eventi che
vengono scatenati dall'interazione dell'utente con i componenti
dell'interfaccia.
✔ Ad un'evento si può associare una sola azione (Macro / Codice VBA)
5. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Riassunto della seconda giornata – 2
✔ VBA è un linguaggio di scripting che ha le medesime regole di Visual
Basic
✔ Una variabile è definita tramite la parola chiave Dim e di default ha
una visibilità limitata (Dim o Private) o può essere di tipo Public
✔ Ad una variabile è possibile assegnare un valore, un'altra variabile o
il risultato di un'espressione.
✔ Le classi sono strutture che raggruppano proprietà e metodi
✔ I componenti delle maschere sono classi che implementano
un'interfaccia grafica e gli eventi.
6. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Riassunto della terza giornata
✔ Una variabile booleana può assumere solo 2 valori: True o False.
✔ Esistono operatori per le variabili booleane (And, Or, Xor, Not)
✔ Un blocco condizionale viene eseguito solo al verificarsi di una precisa
condizione (“if then else” e “select case”).
✔ I cicli iterativi sono blocchi di codice che vengono ripetuti fino al verificarsi
di una precisa condizione (for, while, do while e do until).
✔ Per forzare l'uscita da un ciclo si usa il comando “exit” seguito
dall'identificatore del ciclo (“exit for”, “exit do”, “exit while”).
✔ Per le procedure (sub) e le funzioni (function) esistono analoghi
comandi di uscita (“exit sub” “exit function”)
8. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Il database corrente
La tecnologica di base con cui da VBA è possibile accedere ad un Database è
DAO (Data Access Object).
Application.CurrentDB è il Database di Access da cui verrà eseguito il
codice VBA in esecuzione.
Esistono diversi metodi nell'oggetto Application.CurrentDB. I più importanti
sono:
✔ Execute: esegue un'operazione SQL che non restituisce risultati (es.
update, delete, insert).
✔ OpenRecordset: utilizzata per eseguire una query che restituisce dei
dati da poter immagazzinare in un oggetto denominato Recordset.
Per tutti i metodi e le proprietà consultare la documentazione contestuale.
9. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Interrogare una tabella
Set Rs = Application.CurrentDB.OpenRecordset(QuerySQL)
Esegue la query QuerySQL sul database corrente e ne acquisisce tutte le
righe di cui si prevede l'estrazione fornendo un oggetto denominato
Recordset che consente di navigare i dati della tabella.
Il puntatore (Recordset) parte dalla prima riga (Record) disponibile.
QuerySQL può essere il nome di una tabella, il nome di una query o una
query di interrogazione (select … from … where … )
10. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Metodi del Recordset
✔ metodi per la navigazione del record:
✔ MoveFirst: sposta il cursore alla prima riga dell'interrogazione
✔ MovePrevious: sposta il cursore alla riga precedente rispetto a quella
corrente.
✔ MoveNext: sposta il cursore alla riga successiva a quella corrente
✔ MoveLast: sposta il cursore all'ultima riga disponibile nel recordset.
✔ Metodi per l'aggiornamento del record:
✔ Delete: cancella il record corrente
✔ AddNew: Predispone la tabella principale ad ospitare nuovi dati
✔ Update: Applica le modifiche o il salvataggio.
11. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Proprietà del Recordset
✔ EOF: Valore booleano in sola lettura: restituisce True se non ci sono più
record da leggere.
✔ BOF:Valore booleano in sola lettura. Restituisce True se siamo al primo
record.
✔ RecordCount: restituisce il numero di record ottenuti dall'interrogazione.
✔ Fields: è una proprietà particolare definita a sua volta come una collezione
di oggetti Field.
✔ Ciascun Field corrisponde ad una colonna della tabella interrogata.
✔ Accedere ad un Field se non c'è un record corrente si genera un'errore
di run-time.
13. giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Progettare un DB da zero
Un'agenzia di scommesse ha richiesto la progettazione un simulatore di corse ippiche
che soddifi i seguenti requisiti:
✔ Bisogna mantenere memoria degli scommettitori
✔ Bisogna poter gestire un'anagrafica dei cavalli
✔ Il sistema di vincite deve poter gestire scommesse per piazzamento
✔ È necessario prevedere che il sistema simuli una corsa completa
✔ è dovranno essere il rispettate le seguenti condizioni:
✔ 0.1% di possibilità che un cavallo si infortuni
✔ 30% di possibilità che non avanzi rispetto agli altri
✔ Il restante 59.9% che il cavallo avanzi verso il traguardo
✔ Per ciascuna corsa bisogna tener traccia delle vincite