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).