2009-06-27 20 views
11

Ho creato un report in SSRS con due parametri di report. Mi piacerebbe che il secondo aggiornasse i valori in base alla selezione nel primo. Il primo è un elenco di agenti di vendita e il secondo è un elenco di distributori. Ogni agente può avere molti distributori.Aggiornamento dei parametri del report in base alla selezione dei parametri? (SSRS)

Quindi, se l'utente del report seleziona un agente, mi piacerebbe che solo i suoi distributori mostrassero nell'elenco i secondi parametri. Ovviamente i valori dei parametri verranno da una query, ma non so come farlo riassociare la lista una volta che hanno selezionato un agente.

risposta

12

Questo funziona automagically se ordinate i parametri e set di dati in modo corretto

  • In primo luogo, impostare un set di dati primaria (relazione), poi un set di dati per ogni parametro a discesa. Codificare la clausola WHERE nei set di dati per rendere corrette le dipendenze tra le variabili dei parametri
  • In secondo luogo, ordinare i parametri nel report | Menu parametri in modo che la variabile che si desidera venga riempita dall'utente sia in cima e che il secondo set di dati dipenda da quel parametro. Segui questo ordine attraverso i parametri; il/i parametro/i finale/i deve/devono essere (i) il (i) da cui dipende il set di dati effettivo del report.
  • Ripetere l'operazione per i parametri successivi

Ciò funzionerà se la clausola WHERE nella seconda e le successive serie di dati variabili che hanno SSRS conosce sono popolate dai parametri precedenti.

Ad esempio, ho tre set di dati dal venerabile database pubs (esempio nel 2000).

pubslist viene utilizzato per popolare il parametro @p, e assomiglia a questo:

select pub_id, pub_name from publishers 

titleslist popola il parametro @t, e assomiglia a questo:

select title_id, title from titles where pub_id = @p 

Infine, reportdataset assomiglia this:

select title, price, ytd_sales from titles where title_id = @t 

Il l'ordine dei parametri nel menu Report | Report Parameters è cruciale; poiché i set di dati devono essere eseguiti nell'ordine mostrato sopra e il parametro @t si trova in un set di dati che si basa sul parametro @p impostato per primo, spostiamo @p all'inizio dell'elenco.

Ora, SSRS valuta il set di dati necessario per compilare il menu a discesa per il primo parametro con le etichette. Si basa su un set di dati che non ha bisogno di un parametro, quindi può essere prodotto immediatamente.

Quindi, ottenuto quel valore di parametro, può popolare il menu a tendina del secondo parametro. Ciò a sua volta porta alla produzione del report.

+0

Jeremy, puoi puntare ad un esempio di quello, o includerne uno nella risposta? Grazie. –

+0

Ok, questo è quello che ho fatto: ho due parametri, @SalesRep e @Distributor (entrambi sono stringhe). Ora il Dataset per il rappresentante di vendita è solo una query.Ma il set di dati per il parametro di distribuzione è una query come segue: SELECT [cliente] AS ID, [Nome cliente] AS Nome presso i distributori Dove [Agente di vendita] = @ SalesRep ORDER BY Nome nota la dipendenza sul parametro @SalesRep. Nei parametri del report, assicurarsi che @SalesRep sia ordinato sopra @Distributor. –

+1

Sì, ce l'hai. Il parametro più in alto deve essere il set di dati senza dipendenze. Produce il set di dati per popolare il secondo parametro e così via. –

2

Non l'ho provato da solo, ma ho visto un esempio in cui sono stati configurati i valori disponibili per venire da una query, quindi è stata utilizzata un'espressione per specificare la query. L'espressione includeva il valore del primo parametro.

+0

Questo funziona. – LWoodyiii

3

Per prima cosa creare un set di dati con un elenco di elementi da cui l'utente selezionerà.

Select ID,Agentname from Agents Order by Agentname 

Quindi si crea il secondo set di dati;

es. Select ID,ItemName from Orders where [email protected]

Nel paramenter del report, si fa clic sul parametro agentid e quindi da una query sui valori disponibili. Si seleziona dataset1 e ID come value e AgentName come Label.

L'ultimo dataset saranno i dati effettivi. In questo Si crea la sua dichiarazione come:

Select Quantity, Amount From Orderdetails where [email protected]

Nel servizio di segnalazione, si va al parametro e l'Ordine impostato per ottenere valore da Dataset2

Così l'Ordine di parametro deve essere AgentID, orderid. Il servizio di segnalazione richiederà automaticamente i parametri per ordine.

3

È molto probabile che sia necessario creare un'origine dati condivisa per i più set di dati

  1. Progettare il rapporto prima con la query e campi da visualizzare senza alcun parametro. In questo modo sarai in grado di impostare il set di dati principale del rapporto.
  2. aggiorna la query del set di dati aggiungendo il parametro. usa sempre @ before param_name
  3. nella vista layout del report, fai clic con il pulsante destro del mouse e seleziona i parametri dal menu a comparsa.
  4. l'elenco dei parametri avrà automaticamente il nome param senza il segno @.
  5. selezionare il parametro dall'elenco e aggiornare le sue proprietà ...
  6. se si visualizza in anteprima il report, si chiederà un valore immesso per PARAM_NAME prima di visualizzare il report ...

  7. ora vai alla scheda dati e aggiungi un nuovo set di dati .... chiamalo dsPopParam

  8. la query verrà utilizzata per popolare il parametro param_name .... nessun parametro necessario qui.
  9. ripetere i passaggi da 3 a 5, ma nel passaggio 5 aggiornare l'impostazione delle proprietà nella sezione Valori disponibili per da Query e selezionare il set di dati dsPopParam. I campi Valore e Etichetta saranno i campi restituiti dalla query di dsPopParam.
  10. selezionare di nuovo la scheda Visualizza e notare questa volta la casella di riepilogo contenente l'elenco dei parametri giù ....

Nota importante: nel caso in cui il rapporto non rende o eccezione è stato gettato, appena passa nuovamente alla scheda dati, seleziona il set di dati del report ed esegui la query, ti verrà richiesto di inserire un valore per param_name ... inseriscilo ed eseguilo ... quindi passa alla scheda di anteprima e

Problemi correlati