giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Office & VBA
●Apprendere l'utilizzo
avanzato della suite MS
Office
●Object Linking Exchange
(OLE)
●Visual Basic for
Applications (VBA)
giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Che cos'è Microsoft Office?
È una suite applicativa
costituita da una serie di
strumenti differenziati in
dipendenza della versione
posseduta
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”.
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)
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.
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”)
giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Il programma del corso – 4° giorno
● Accesso ai dati tramite scripting (nel
database corrente)
● In pratica: progettare un database da zero
● Nascondere tabelle, query e maschere a
tutti gli utenti
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.
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 … )
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.
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.
giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Esempio di interrogazione DB
Dim DB As Database
Dim Rs As Recordset
Set DB = Application.CurrentDB
Set Rs = DB.OpenRecordset(“Anagrafica”)
Do While Not Rs.eof
Debug.Print Rs(“Cognome”) & “ “ & Rs(“Nome”)
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
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
giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Nascondere gli oggetti del DB
Per maggiore sicurezza tutti gli oggetti
necessari al funzionamento dell'applicazione
Access è possibile nasconderli.
Per visualizzare successivamente gli oggetti
nascosti abilitare l'opzione dal menu
“strumentiopzioni”
giorno2-100321110649-phpapp02
Autore: - http://diegolamonica.info
Email:me@diegolamonica.info
Il programma del corso – 5° giorno
● Collegarsi a tabelle in un altro
Database
● Interrogare altre basi dati tramite
VBA

Office & VBA - Giorni 4 e 5

  • 1.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Office& VBA ●Apprendere l'utilizzo avanzato della suite MS Office ●Object Linking Exchange (OLE) ●Visual Basic for Applications (VBA)
  • 2.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Checos'è Microsoft Office? È una suite applicativa costituita da una serie di strumenti differenziati in dipendenza della versione posseduta
  • 3.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Riassuntodella 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 Riassuntodella 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 Riassuntodella 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 Riassuntodella 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”)
  • 7.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Ilprogramma del corso – 4° giorno ● Accesso ai dati tramite scripting (nel database corrente) ● In pratica: progettare un database da zero ● Nascondere tabelle, query e maschere a tutti gli utenti
  • 8.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Ildatabase 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 Interrogareuna 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 Metodidel 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.
  • 12.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Esempiodi interrogazione DB Dim DB As Database Dim Rs As Recordset Set DB = Application.CurrentDB Set Rs = DB.OpenRecordset(“Anagrafica”) Do While Not Rs.eof Debug.Print Rs(“Cognome”) & “ “ & Rs(“Nome”) Rs.MoveNext Loop Rs.Close Set Rs = Nothing
  • 13.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Progettareun 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
  • 14.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Nasconderegli oggetti del DB Per maggiore sicurezza tutti gli oggetti necessari al funzionamento dell'applicazione Access è possibile nasconderli. Per visualizzare successivamente gli oggetti nascosti abilitare l'opzione dal menu “strumentiopzioni”
  • 15.
    giorno2-100321110649-phpapp02 Autore: - http://diegolamonica.info Email:me@diegolamonica.info Ilprogramma del corso – 5° giorno ● Collegarsi a tabelle in un altro Database ● Interrogare altre basi dati tramite VBA