Quando si lavora con dati relazionali, in cui i dati correlati sono archiviati in tabelle separate, spesso è necessario visualizzare le informazioni da più tabelle o query nello stesso report. Ad esempio, si vogliono visualizzare contemporaneamente i dati dei clienti, ma anche le informazioni sugli ordini dei clienti. Un sottoreport è uno strumento di Access utile per tale scopo, perché consente di visualizzare le informazioni sugli ordini nel report insieme alle informazioni sui clienti, in modo logico e leggibile. Access offre vari modi per creare rapidamente i sottoreport.
Per saperne di più
Informazioni sui sottoreport
Un sottoreport è un report inserito in un altro report. Quando si combinano i report, uno deve fungere da report principale che contiene gli altri report. Un report principale può essere associato o non associato. Un report associato consente di visualizzare i dati e ha una tabella, query o un'istruzione SQL specificata nella proprietà Origine record. Un report non associato non si basa su una tabella, una query o un'istruzione SQL, quindi la proprietà Origine record del report è vuota.
Esempio di report principale non associato con due sottoreport non correlati
Un report principale non associato non può visualizzare dati propri, ma può comunque fungere da report principale per i sottoreport non correlati che si vogliono combinare.
1. Il report principale non associato contiene due sottoreport.
2. Un sottoreport contiene un riepilogo delle vendite per dipendente.
3. L'altro sottoreport riepiloga le vendite in base alla categoria.
Esempio di report principale e sottoreport associati alla stessa origine record
È possibile usare il report principale per visualizzare i record di dettaglio, ad esempio tutte le vendite dell'anno, e quindi usare un sottoreport per visualizzare le informazioni di riepilogo, ad esempio le vendite totali per ogni trimestre.
1. Il sottoreport riepiloga le vendite annuali per trimestre.
2. Il report principale elenca le vendite quotidiane.
Esempio di un report principale e di un sottoreport associati a origini record correlate
Un report principale può contenere i dati comuni a uno o più sottoreport. In questo caso, il sottoreport contiene i dati correlati ai dati del report principale.
1. Il report principale elenca il nome e la città di ogni fiera.
2. Il sottoreport elenca i rappresentanti che parteciperanno a ogni fiera.
Sottomaschere in un report
Oltre ai sottoreport, un report principale può includere anche sottomaschere e non ci sono limiti al numero sia delle sottomaschere che dei sottoreport. Inoltre, un report principale può contenere fino a sette livelli di sottomaschere e sottoreport. Ad esempio, un report può contenere un sottoreport che a sua volta può contenere una sottomaschera o un sottoreport e così via, fino a sette livelli.
Se si aggiunge una sottomaschera a un report e quindi si apre il report in visualizzazione Report, è possibile usare la sottomaschera per filtrare e spostarsi tra i record. Il codice Visual Basic, Applications Edition (VBA) e le macro incorporate allegate alla maschera con i relativi controlli vengono ancora eseguiti, anche se alcuni eventi vengono disabilitati in questo contesto. Non è possibile aggiungere, modificare o eliminare i record con una sottomaschera in un report.
Collegamento di un report a una sottomaschera o a un sottoreport
Quando si inserisce una sottomaschera o un sottoreport che contiene informazioni relative ai dati del report principale, il controllo sottoreport deve essere collegato al report principale. Il collegamento assicura che i record visualizzati nella sottomaschera o nel sottoreport corrispondano correttamente ai record stampati nel report principale.
Quando si crea una sottomaschera o un sottoreport con una procedura guidata oppure trascinando un oggetto dal riquadro di spostamento a un report, Access collega automaticamente la sottomaschera o il sottoreport al report principale se si verifica una delle condizioni seguenti.
-
Vengono definite le relazioni per le tabelle selezionate o per le tabelle sottostanti le query selezionate.
-
Il report principale si basa su una tabella con una chiave primaria e la sottomaschera o il sottoreport si basa su una tabella che contiene un campo con lo stesso nome della chiave primaria e con un tipo di dati uguale o compatibile. Ad esempio, se la chiave primaria della tabella sottostante il report principale è un campo Numerazione automatica e la proprietà Dimensione campo è impostata su Intero lungo, il campo corrispondente nella tabella sottostante la sottomaschera o il sottoreport deve essere un campo numerico con la proprietà Dimensione campo impostata su Intero lungo. Se si seleziona una o più query come origine record di una sottomaschera o di un sottoreport, le tabelle sottostanti nelle query devono soddisfare le stesse condizioni.
Creare un sottoreport
Se il sottoreport sarà collegato al report principale, verificare che le origini record sottostanti siano correlate prima di eseguire la procedura seguente.
Usare la Creazione guidata Sottoreport per creare un sottoreport
Questa procedura presuppone che sia già disponibile un report a cui aggiungere un sottoreport. Per altre informazioni sulla creazione di un report, vedere gli articoli Creare un report semplice o Creare un report con raggruppamenti o di riepilogo.
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sul report a cui aggiungere un sottoreport, quindi scegliere Visualizzazione Struttura.
-
Nel gruppo Controlli della scheda Progettazione aprire la raccolta Controlli facendo clic sulla freccia GIÙ nell'angolo in basso a destra:
-
Nel menu visualizzato verificare che Usa creazioni guidate Controllo sia selezionato.
-
Aprire di nuovo la raccolta Controlli e fare clic su Sottomaschera/sottoreport.
-
Nel report fare clic sul punto in cui inserire il sottoreport.
-
Se viene visualizzata una finestra di dialogo con un avviso di sicurezza, fare clic su Apri per avviare la procedura guidata.
-
Nella prima pagina della Creazione guidata Sottoreport, per creare una nuova sottomaschera o sottoreport e basarla su una tabella o una query, fare clic su Usa tabelle e query esistenti. Se si vuole usare un report o una maschera esistente come sottoreport, fare clic su Usa un report o una maschera esistente, selezionare il report o la maschera nell'elenco e quindi fare clic su Avanti.
Nota: Se non ci sono altri report o maschere nel database, l'elenco sarà vuoto e l'opzione Usa un report o una maschera esistente non sarà disponibile.
-
Se si sceglie Usa un report o una maschera esistente nella pagina precedente della procedura guidata, ignorare questo passaggio e andare direttamente al passaggio 9. In caso contrario, dall'elenco Tabelle/query selezionare la tabella o la query contenente i campi da includere nel sottoreport e fare doppio clic sui campi da inserire nell'elenco Campi disponibili per aggiungerli al sottoreport.
Se si prevede di creare un collegamento tra il sottoreport e il report principale, non dimenticare di includere i campi da usare per creare il collegamento, anche se non li si vuole visualizzare. In genere, il campo di collegamento è un campo ID. Nella figura precedente la tabella Ordini è l'origine record del sottoreport e la tabella Clienti è l'origine record del report principale. La tabella Ordini viene associata alla tabella Clienti con il campo ID cliente, quindi questo campo viene aggiunto all'elenco Campi selezionati.
Nota: Nel sottoreport è possibile inserire i campi da più tabelle e query. Dopo aver aggiunto i campi da una tabella, selezionare la tabella o la query successiva dall'elenco Tabelle/query e quindi aggiungere i campi desiderati.
Fare clic su Avanti per continuare.
-
In questa pagina della procedura guidata si specifica come collegare il sottoreport al report principale. Se Access trova dei campi che sembrano adatti per il collegamento del sottoreport al report principale, la procedura guidata visualizza un elenco di possibili suggerimenti per il collegamento.
È possibile selezionare il suggerimento di collegamento che sembra più adatto alle proprie esigenze o, se non si vuole collegare il sottoreport al report principale, selezionare Nessuno. Se si vuole collegare il sottoreport al report principale, ma nessuno dei suggerimenti sembra valido, fare clic su Definizione personalizzata.
Nota: Se la procedura guidata non rileva campi adatti per il collegamento, non fornisce alcun elenco di suggerimenti di collegamento e seleziona automaticamente l'opzione Definizione personalizzata.
Quando l'opzione Definizione personalizzata è selezionata, la procedura guidata visualizza due set di elenchi.
-
In Campi maschera/report selezionare i campi del report principale da usare per collegare il report principale alla sottomaschera o al sottoreport. È possibile selezionare fino a tre campi e ogni campo selezionato deve corrispondere a un campo correlato nell'origine dati della sottomaschera o del sottoreport.
-
In Campi sottomaschera/sottoreport selezionare i campi della sottomaschera o del sottoreport che creano il collegamento ai campi del report principale selezionati.
-
Per uscire dalla sottomaschera o dal sottoreport non collegato al report principale, assicurarsi che tutti gli elenchi siano vuoti.
Fare clic su Avanti per continuare.
-
-
Nell'ultima pagina della procedura guidata digitare un nome per la sottomaschera o il sottoreport oppure fare semplicemente clic su Fine per accettare l'impostazione predefinita.
Access aggiunge un controllo sottoreport al report e associa il controllo (ossia, imposta la proprietà Oggetto di origine) come indicato di seguito:
-
Se è stato selezionato Usa un report o una maschera esistente nella prima pagina della procedura guidata, Access associa il controllo sottoreport al report o alla maschera specificata.
-
Se è stato selezionato Usa tabelle e query esistenti nella prima pagina della procedura guidata, Access crea un nuovo oggetto report nel riquadro di spostamento e quindi lo associa al controllo sottoreport. Il nome del nuovo oggetto report è uguale a quello digitato nell'ultima pagina della procedura guidata.
Aggiungere una tabella, una query, una maschera o un report a un report come sottoreport
Un metodo rapido per aggiungere un sottoreport a un report consiste nell'aprire il report principale in visualizzazione Layout o Struttura e quindi trascinarvi un oggetto dal riquadro di spostamento. Per collegare il sottoreport al report principale, assicurarsi che le origini record sottostanti siano correlate e includano i campi da usare per collegare la sottomaschera o il sottoreport al report principale.
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sul report da usare come report principale, quindi scegliere Visualizzazione Layout o Visualizzazione Struttura dal menu di scelta rapida.
-
Trascinare una tabella, una query, una maschera o un altro report dal riquadro di spostamento alla sezione del report principale in cui si vuole visualizzare il sottoreport.
Access esegue una delle operazioni seguenti:
-
Se Access riesce a determinare come collegare i due oggetti, aggiunge un controllo sottoreport al report. Se si aggiunge una maschera o un report, Access associa il controllo sottoreport a tale oggetto. Se si aggiunge una tabella o una query, Access crea prima un oggetto report, quindi associa il controllo sottoreport al nuovo oggetto.
-
Se Access non riesce a determinare come collegare i due oggetti, viene visualizzata la Creazione guidata Sottoreport. Per continuare, seguire la procedura nella sezione Usare la Creazione guidata Sottoreport per creare un sottoreport, iniziando dal passaggio 9.
Dopo aver completato la procedura guidata, Access aggiunge il sottoreport al report.
Usare la procedura seguente per verificare che la sottomaschera o il sottoreport sia collegato correttamente al report principale.
-
Fare clic sul controllo sottoreport per selezionarlo.
-
Se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.
-
Nella scheda Dati della finestra delle proprietà esaminare le proprietà Collega campi master e Collega campi secondari.
-
Per una sottomaschera o un sottoreport scollegato, entrambe le proprietà devono essere vuote.
-
Per una sottomaschera o un sottoreport collegato, le proprietà Collega campi master e Collega campi secondari devono visualizzare il campo o i campi che collegano i due oggetti. Ad esempio, se il report principale visualizza informazioni dalla tabella Dipendenti e la sottomaschera o il sottoreport visualizza le informazioni dalla tabella Ordini, la proprietà Collega campi master dovrebbe visualizzare il campo ID della tabella Dipendenti, mentre la proprietà Collega campi secondari il campo ID dipendente della tabella Ordini.
-
Queste proprietà potrebbero dover essere modificate per assicurare il corretto funzionamento della sottomaschera o del sottoreport. Seguire questa procedura.
-
Nella scheda Dati della finestra delle proprietà fare clic sulla casella della proprietà Collega campi master, quindi fare clic sul pulsante Genera .
Viene visualizzata la finestra di dialogo Collegamento campi sottoreport.
-
Negli elenchi Campi master e Campi secondari selezionare i campi a cui collegare i report. In caso di dubbi sui campi da usare, fare clic su Suggerisci per provare a determinare in automatico i campi di collegamento. Al termine, fare clic su OK.
Se il campo che si vuole usare per collegare il report non è visualizzato, è necessario modificare l'origine del record principale oppure della sottomaschera o del sottoreport per verificare che contenga il campo di collegamento. Ad esempio, se il report si basa su una query, verificare che il campo di collegamento sia presente nei risultati della query.
-
Salvare il report principale e passare alla visualizzazione Report, quindi verificare che il report funzioni come previsto.
Aggiungere una tabella o una query a un report come foglio dati
Un foglio dati è una rappresentazione visiva semplificata dei dati, simile a un foglio di calcolo. Ogni colonna in un foglio dati rappresenta un campo nella query o nella tabella di origine e ogni riga rappresenta un record. Per visualizzare un foglio dati in un report, è possibile usare il controllo Sottomaschera/Sottoreport. Si tratta di una tecnica valida da usare in situazioni in cui si vuole una visualizzazione compatta dei dati e non sono richieste le funzionalità di formattazione di un oggetto maschera o report. Per aggiungere un foglio dati a un report:
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sul report da usare come report principale, quindi scegliere Visualizzazione Struttura dal menu di scelta rapida.
-
Nel gruppo Controlli della scheda Progettazione aprire la raccolta Controlli facendo clic sulla freccia GIÙ nell'angolo in basso a destra:
-
Nel menu visualizzato verificare che Usa creazioni guidate Controllonon sia selezionato.
-
Aprire di nuovo la raccolta Controlli e fare clic su Sottomaschera/sottoreport.
-
Nel report fare clic sul punto in cui inserire il sottoreport.
-
Se si avvia la Creazione guidata Sottoreport, fare clic su Annulla per chiuderla.
-
Se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.
-
Nel report fare clic sul nuovo controllo sottoreport per selezionarlo.
-
Nella scheda Dati della finestra delle proprietà fare clic sulla freccia nella casella delle proprietà Oggetto di origine, quindi scegliere la tabella o la query che si vuole visualizzare nel controllo sottoreport. Ad esempio, per visualizzare la tabella Ordini, fare clic su Tabella.Ordini.
Access cerca di creare un collegamento tra il foglio dati e il report principale in base alle relazioni definite nel database.
-
Nella scheda Dati della finestra delle proprietà esaminare le proprietà Collega campi master e Collega campi secondari.
-
Per un foglio dati non collegato, assicurarsi che entrambe le proprietà siano vuote.
-
Per un foglio dati collegato, verificare che le proprietà Collega campi master e Collega campi secondari visualizzino il campo o i campi che collegano il report principale al foglio dati. Ad esempio, se il report principale visualizza informazioni dalla tabella Dipendenti e il foglio dati visualizza le informazioni dalla tabella Ordini, la proprietà Collega campi master dovrebbe visualizzare il campo ID della tabella Dipendenti, mentre la proprietà Collega campi secondari il campo ID dipendente della tabella Ordini.
-
In alcuni casi, potrebbe essere necessario configurare personalmente le proprietà dei campi di collegamento. A questo scopo, usare questa procedura.
-
Nella scheda Dati della finestra delle proprietà fare clic sulla casella della proprietà Collega campi master, quindi fare clic sul pulsante Genera .
-
Se viene visualizzata una finestra di dialogo con un avviso di sicurezza, fare clic su Apri.
Viene visualizzata la finestra di dialogo Collegamento campi sottoreport.
-
Negli elenchi Campi master e Campi secondari selezionare i campi da usare per collegare il report principale al foglio dati. In caso di dubbi sui campi da usare, fare clic su Suggerisci per provare a determinare in automatico i campi di collegamento. Al termine, fare clic su OK.
Se il campo che si vuole usare per il collegamento non è visualizzato, è necessario modificare l'origine del record master oppure il foglio dati per verificare che contenga il campo di collegamento. Ad esempio, se il foglio dati si basa su una query, verificare che il campo di collegamento sia presente nei risultati della query.
-
Salvare il report principale e passare alla visualizzazione Report, quindi verificare che il report funzioni come previsto.
Apportare modifiche alla struttura di un sottoreport
Dopo aver aggiunto un sottoreport a un report, è consigliabile apportare modifiche alla struttura del sottoreport oppure fare riferimento ai dati del sottoreport nel report principale. Le sezioni seguenti forniscono suggerimenti su come eseguire queste operazioni.
Aprire una sottomaschera o un sottoreport in una nuova finestra in visualizzazione Struttura
Per modificare la struttura di una sottomaschera o di un sottoreport mentre si lavora nel report principale in visualizzazione Struttura, è possibile aprire la sottomaschera o il sottoreport in una finestra separata.
-
Fare clic sulla sottomaschera o sul sottoreport per selezionarlo.
-
Nel gruppo Strumenti della scheda Progettazione fare clic su Sottoreport in nuova finestra.
Nota: Questo comando non è disponibile se il controllo sottomaschera/sottoreport è associato a una tabella o una query.
Mostrare un totale di un sottoreport nel report principale
Si supponga di usare un sottoreport denominato Ordini che contiene una casella di testo denominata Totale spese di spedizione e che la casella di testo calcoli la somma della colonna Spese di spedizione. Per visualizzare la somma del sottoreport nel report principale, è necessario aggiungere una casella di testo al report principale, quindi usare un'espressione per fare riferimento alla casella di testo Totale spese di spedizione del sottoreport. A questo scopo, usare questa procedura.
-
Fare clic con il pulsante destro del mouse sul report principale nel riquadro di spostamento, quindi scegliere Visualizzazione Struttura nel menu di scelta rapida.
-
Nel gruppo Controlli della scheda Progettazione fare clic su Casella di testo.
-
Nel report principale fare clic sul punto in cui inserire la nuova casella di testo.
-
Se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.
-
Nella scheda Dati della finestra delle proprietà digitare questa espressione nella casella della proprietà Origine controllo.
=IIf(IsError([Sottoreport Ordini].[Report]![Totale spese di spedizione]),0,[Sottoreport Ordini].[Report]![Totale spese di spedizione])
Note:
-
In questo esempio, è possibile usare l'espressione più semplice =[Sottoreport Ordini].[Report]![Totale spese di spedizione], ma in questo caso, se il sottoreport non contiene dati, il controllo nel report principale visualizzerà #Errore. Se si usa la funzione IsError con la funzione IIf, come illustrato nella prima espressione, la casella di testo nel report principale visualizzerà uno zero (0) se il sottoreport non restituisce dati.
-
È possibile usare il Generatore di espressioni per creare un'espressione facendo clic sul pulsante Crea nella casella delle proprietà Origine controllo.
-
-
Nella scheda Formato della finestra delle proprietà impostare la proprietà Formato sul valore appropriato, in questo caso Valuta.
-
Salvare il report e passare alla visualizzazione Report per verificare che il calcolo venga eseguito come previsto.