Esercizio ODBC
Configurare il driver ODBC
• Start  Control Panel  Administrative
Tools
• Aprire: Data Source(ODBC)
• User DSN  Add….
• Selezionare il driver : Oracle ODBC Driver
(in OraHome92)
Configurare Oracle ODBC driver
• Data source name: un nome del tutto arbitrario
(uso Mionome.oracle1.odbc)
• TNS Service name: il service name del database
oracle verso cui voglio effettuare la connessione.
(oracle1 oppure oracle2)
• UserID: il mio user name di Oracle
• Click su OK
Esercizio
• Creare una query MS Access per visualizzare
e cancellare le sessioni gestite nell’esercizio
5.
• Creo una directory ~/ese6bdl
• Copio in ~/ese6bdl da ~ghelli/bdl04/ese6 i
file create.sql (cancellazione in cascata a
partire dalle sessioni) e createview.sql (per
estrarre i secondi dalla tabella Sessioni)
• Compilo i file.
Funzionalità di Microsoft Access
• Table: tabelle relazionali sulle quali è possibile creare
form, eseguire query, creare report. La creazione delle
relazioni può essere effettuata anche tramite wizard.
• Query: interrogazione SQL Access (possibilità di
creazione tramite interfaccia grafica e/o wizard).
• Form: per creare delle semplici ed intuitive maschere di
inserimento dati sulle table presenti nel database.
• Macros: insieme di operazioni che il database compie
automaticamente in corrispondenza degli eventi
selezionati.
• Report: strumento per la presentazione (tipicamente in
formato stampa) delle table o dei risultati di query.
• Modules: strumento per la programmazione di procedure e
funzioni in VBA.
Utilizzare tabelle Oracle in MS Access
Start  Programs  Microsoft Access
Blank database
File  Get External Data  Link Tables
Settare il parametro File of types a ODBC database
Selezionare Machine Data Source e selezionare l’istanza di
oracle a cui si vuole connettersi (Mionome.oracle1.odbc)
• Inserire Username e Password dell’istanza di oracle a cui
si vuole connetersi.
• OK, e aspettare…
•
•
•
•
•
Usare tabelle Oracle in MS Access
• Selezionare le tabelle “Acquisti, Oggetti,
Scelte, Sessioni, Sessioni_Secondi”.
• Premo solo OK per tutte le richieste di
selezione di campi per integrità referenziale.
• Apro e modifico le tabelle.
• Osservo l’effetto delle modifiche sulle
tabelle Oracle, usando SqlPlus Worksheet:
– select * from <tabella>;
Query: Sessioni Aperte
• Creo una query Access che mostri per ogni
sessione aperta:
– ID della sessione
– il nome dell’utente,
– il suo anno di nascita
– Il numero di acquisti effettuati dall’utente;
– Il prezzo totale degli acquisti effettuati
dall’utente;
Creazione di Sessioni Aperte
• Nella finestra di gestione del database seleziono
queries.
• Premo il bottone New  Opzione Design View 
OK
• Dalla finestra Show Table (menu Query scelta
Show Table) seleziono con Add le tabelle Acquisti,
Oggetti, Sessioni. Premo Close.
• Considerato che per selezionare un campo di una
tabella devo fare doppio click sul suo nome,
seleziono i campi: IDSessione,NomeUtente,
AnnoNascita, prezzo
Creazione di Sessioni Aperte
• Creo le Join tra le tabelle:
– trascino il campo IDSessione sul campo sessione
– trascino il campo IDOggetto sul campo oggetto
• Definisco le outer join: faccio doppio click sulla
linea che rappresenta
– la join tra Sessioni e Acquisti e seleziono
l’opzione 2 (da Sessioni verso Acquisti).
– la join tra Acquisti e Oggetti e seleziono
l’opzione 3 (da Acquisti verso Oggetti).
Creazione di Sessioni Aperte
• Trasformo la query in una group by: mi posiziono sulla
parte inferiore della finestra della query e premo il tasto
destro, seleziono Totals.
• Modifico il campo PREZZO della select:
– Sostituisco PREZZO con TOTALE: PREZZO
– E sostituisco Group By con Sum
• Inserisco un ulteriore campo alla select:
Field (campo)
ACQUISTI: SESSIONE
Total (totale)
Count
• Salvo la query come: Sessioni Aperte.
• Eseguo la query premendo !
Form in Access
• Creo una form che consente di eliminare una
sessione
• La form mostra le sessioni nella tabella sessioni;
ogni sessione è associata ad un bottone che
premuto ne causa la cancellazione.
Form Cancellazione Sessioni
• Nella finestra di gestione del database seleziono
forms.
• Premo il bottone New  Opzione Form Wizard 
OK
• Seleziono la tabella o query su cui eseguire la ricerca e i
campi che devono comparire nel form:
– Query: Sessioni Aperte
– Campi: Tutti (premere >>)
• Click su Next
Form Cancellazione Sessioni
• Seleziono il layout del form tabular tra quelli
disponibili e premo “Next”.
• Seleziono lo stile grafico tra quelli disponibili e
premo “Next”.
• Scrivo il nome FormCancellazioneSessioni,
seleziono Open the form; quindi seleziono il tasto
“Finish”.
Form Cancellazione Sessioni
Aggiungo un bottone di comando (cancellazione)
alla form.
• Clicco con il tasto destro del mouse sul form
appena creato; comparirà un menu da cui scegliere
il comando Form Design
• Seleziono dalla Toolbox il “Command Button”
identificabile dalla seguente figura:
• Clicco sul form, nel punto in cui deve comparire il
bottone.
Form Cancellazione Sessioni
• Seleziono nel Wizard la categoria “Record
Operation” e tra le azioni, il comando
“Delete Record”; quindi premere “Next”.
• Seleziono il testo o la figura che dovrà
contraddistinguere il bottone appena creato
e premere il tasto “Next”.
• Scrivo il nome associato al bottone e quindi
premo il tasto “Finish”.
Esercizio di query
• Definire una query che per ogni sessione
ritorni:
–
–
–
–
–
IDSESSIONE
NOME UTENTE
ANNO NASCITA
NUM. SCELTE
NUM. ACQUISTI
Soluzione
• Definire una query che calcoli il numero
delle scelte per sessione
• Definire una query che calcoli il numero
degli acquisti per sessione
• Definire una query che faccia la giunzione
tra i risultati delle due query precedenti
Esercizio di Form
• Realizzare una form per l’immissione dati e
la cancellazione nella tabella Clienti del
database del corso
– La form deve mostrare i dati in formato
Columnar
– Deve avere un bottone di comando per
l’inserimento dati (funzionalità add new record)
e per la cancellazione
Form Immissione Spot
• Per inserire uno spot è necessario specificare un
cliente tra quelli esistenti
• Realizziamo una form di inserimento per la tabella
Spot che contiene una Combo Box per cercare tra i
clienti esistenti nel database
• La form è associata alla tabella Spot, ma consente
l’accesso alla tabella Clienti per la modifica o
l’inserimento del campo CodiceCliente.
Form Immissione Spot
• Creo un link alle tabelle Spot e Clienti
• Creo una form in con il Wizard
– Seleziono la tabella Spot e tutti i suoi campi
– Quindi scelgo il formato Columnar e lo stile
che preferisco
– Inserisco un nome per la form
– Seleziono Modify Form’s Design e premo
Finish
Form Immissione Spot
Per aggiungere un Combo Box per il campo cliente di Spot:
• Seleziono e cancello il campo Text Box CodiceCliente
• Seleziono dalla Toolbox il bottone Combo Box
identificabile dalla seguente figura:
• Clicco sul form, nel punto in cui deve comparire la Combo
Box.
Form Immissione Spot
• Seleziono nel Wizard la prima opzione: i valori nella
combo box vengono prelevati da una tabella o da una
query del database.
• Seleziono la tabella Clienti e premo Next
• Seleziono tutti i campi (>>) e premo Next
• Definisco il formato della Combo Box:
– la chiave può essere o meno parte dei campi mostrati nella Combo
Box
– larghezza di ogni campo, oppure, per ottenere una grandezza
ottimale, fare doppio click sul bordo destro di ogni colonna.
– Premo Next.
Form Immissione Spot
• Al momento dell’uso, la selezione di un’opzione tra quelle
della Combo Box ritorna un valore.
– Tale valore è per default la chiave se, al passo precedente, non ho
messo quest’ultima tra i campi della Combo Box.
– Altrimenti, se ho immesso la chiave tra i campi della Combo Box,
devo scegliere quale, tra i campi disponibili, viene ritornato in
corrispondenza di una selezione della Combo Box.
• Nel secondo caso, seleziono il campo CodiceCliente
• Premo Next.
Form Immissione Spot
• Richiedo che il valore ritornato dalla Combo Box venga
memorizzato nel campo CodiceCliente della tabella Spot.
– Seleziono la seconda opzione: Store that value in this
field
– Seleziono il campo CodiceCliente (se il campo non è
presente, ne seleziono uno a caso e risolvo il problema
successivamente – vedi lucido successivo)
– Premo Next.
• Scrivere un nome per la Combo Box appena creata e
quindi premere il tasto Finish.
• Attenzione: le chiavi primarie devono essere inserite
manualmente (si consiglia di assegnare valori
adeguatamente grandi).
Campo risultato
• Se il campo CodiceCliente non appare nella
penultima schermata:
– Faccio click con il tasto destro sulla Combo
Box
– Seleziono Properties
– Seleziono il Tab Data
– Modifico il campo Control Source in
CodiceCliente
Esercizio Combo Box
• Importare in Access le tabelle
– Pagamenti
– Pagamenti_Fatture
– Fatture
• Definire una form di inserimento e cancellazione per
Pagamenti_Fatture che utilizzi Combo Box dove utile.
• Attenzione: le chiavi primarie devono essere inserite
manualmente (si consiglia di assegnare valori
adeguatamente grandi).