Office & VBA - Giorni 4 e 5

553 views
494 views

Published on

Accesso ai dati tramite la scrittura di codice VBA basandosi sulla tecnologia DAO

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
553
On SlideShare
0
From Embeds
0
Number of Embeds
92
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Office & VBA - Giorni 4 e 5

  1. 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. 2. 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
  3. 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. 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. 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. 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”)
  7. 7. 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
  8. 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. 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. 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. 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. 12. 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
  13. 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
  14. 14. 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”
  15. 15. 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

×