2009-04-28 15 views
8

Ho due origini dati locali che posso inserire nel rapporto. Funziona senza problemi. Ma come posso impostare il rapporto? Un'origine dati contiene un elenco di dipendenti e informazioni su di essi. L'altro contiene un mucchio di ore lavorative per ciascun dipendente.SSRS: rapporto dettagli principali con due origini dati

Vorrei utilizzare una tabella per l'elenco degli impiegati e quindi disporre di un'altra tabella per le ore di lavoro al di sotto di ciascun dipendente (con il loro orario di lavoro).

È possibile? Devo usare un rapporto secondario? Dovrei unirli in un'unica origine dati? =/

risposta

5

Per quanto posso dire, è impossibile annidare un dataset all'interno di un altro senza utilizzare un sottoreport.

Ciò significa che è necessario fare una delle due cose:

  1. refactoring del due origini dati in un unico origine dati. Ad esempio, eseguire un join tra i dipendenti e l'orario di lavoro per ciascun dipendente. È quindi possibile utilizzare le proprietà di raggruppamento dell'oggetto Table per formattare l'elenco nel modo desiderato.

  2. Se l'unione delle due origini dati non è pratica, è possibile utilizzare i sottoreport per ottenere ciò che si desidera. Creare un sottoreport contenente l'origine dati dell'orario di lavoro e assegnargli un parametro per il dipendente corrente. Filtra le ore di lavoro con questo parametro.

    Nel report padre, è possibile inserire il sottoreport nell'elenco e passare l'ID dipendente per la riga corrente come parametro.

    Si noti che ci sono alcune stranezze di formattazione coinvolte nell'utilizzo dei sottoreport. Sono stato in grado di aggirarli nella maggior parte dei casi, ma il metodo preferito sarebbe sicuramente il numero uno sopra.

+0

Ma se mi unisco a quelle tabelle, ci saranno MOLTI dati ripetuti in quelle file. È importante? O SSRS se la cava bene? Come è possibile aggiungere un sottoreport in una tabella? Mi piacerebbe davvero usare una tabella per la prima origine dati, perché è molto più facile rendere la formattazione giusta, ecc. Ma come è possibile inserire un sottoreport in una cella di tabella? Ti unisci a un gruppo di loro? O come lo fai? – Svish

1

Per impostare più origini dati ... è necessario posizionare due oggetti elenco separati nel report. Vai alla finestra di progettazione e nella casella degli strumenti puoi inserire una nuova "lista". Quindi, puoi fare un altro rapporto. Collega il secondo elenco al set di dati secondario, che implementa tramite l'origine dati secondaria.

È un po 'troppo lungo, ma l'idea di base è che ogni oggetto elenco nel report può essere collegato solo a un'origine dati.

+0

Beh, questo lo so. Ma questo si tradurrà in due liste una dopo l'altra? Ho bisogno della lista secondaria per venire dopo ogni elemento nel primo elenco. E per includere solo quegli elementi che sono rilevanti per quell'articolo ... – Svish

+1

Per essere in grado di collegarli in questo modo, è necessario averli nella stessa origine dati, credo. L'intreccio di due origini dati in un singolo oggetto elenco non funzionerà, il che è davvero quello che dovresti fare per raggrupparli l'uno sull'altro. –

5

Aggiunta di una nuova risposta per assicurarsi che venga inviata una notifica per esso.

L'utilizzo di un sottoreport è il metodo più semplice quando funziona. Puoi semplicemente trascinare e rilasciare un sottoreport su una cella di tabella e riempirà l'area del contenuto di quella cella. Facendo clic con il pulsante destro del sottoreport, è possibile modificare i parametri per il sottoreport. Come la maggior parte dei valori in SSRS, i parametri possono essere impostati su espressioni che utilizzano i campi nella tabella.

All'interno del sottoreport, è sufficiente filtrare i risultati per mostrare solo i record associati al dipendente passato come parametro.

L'altro percorso che è possibile eseguire è unire le due origini dati utilizzando un join. Questo vi darà i dati qualcosa di simile:

employee1 time1.1 
employee1 time1.2 
employee1 time1.3 
employee1 time1.4 
employee2 time2.1 
employee2 time2.2 
employee2 time2.3 

è quindi possibile creare un gruppo sulle colonne ripetute (dipendente in questo esempio), e attivare la proprietà HideDuplicates su quelle colonne.Il risultato sarà simile a questa:

employee1 time1.1 
      time1.2 
      time1.3 
      time1.4 
employee2 time2.1 
      time2.2 
      time2.3 
+0

Ma, come ho chiesto in un commento all'altra domanda, come sono le prestazioni quando si fa questo? Penso che quando ti unisci a quei due tavoli finirai con un tavolo enorme con molti dati ripetuti. Ma d'altra parte, avrà solo un tavolo e un rapporto da trattare ... e non due tabelle e un rapporto secondario ripetono un gazzione di volte ... – Svish

+0

Provalo e scopri :) Dalla tua descrizione del problema, dubito che i dati uniti prendano drammaticamente più a lungo da recuperare rispetto al recupero dei due in modo indipendente. Ma potrebbe essere un problema se le colonne extra sono insolitamente grandi. – AaronSieb

+0

Hmm ... forse potrei provare a unirmi a loro. Perché sembra essere un po 'complicato ottenere un sottotitolo piacevolmente all'interno di un tavolo. E le colonne non sono così grandi. Solo numeri e date regolari e un po 'di testo. – Svish

0

Nella classe di documento rapporto v'è una proprietà chiamata "Database", che ha una collezione di tavoli. È possibile utilizzare "SetDataSource" su ciascuna di queste tabelle, al fine di inserire gli elenchi separati di oggetti nel report.

Problemi correlati