Utilizzo di parametri a valore singolo e multivalore (Generatore report 2.0)
I parametri possono essere a valore singolo o multivalore. Un parametro multivalore può essere impostato su più valori. Quando si definisce un elenco di valori disponibili per un parametro multivalore, nell'elenco a discesa della barra degli strumenti del report viene automaticamente visualizzata l'opzione Seleziona tutto. È possibile utilizzare questa opzione per selezionare e deselezionare tutti i valori dell'elenco.
Nelle caselle di testo nell'area di progettazione, sia i parametri a valore singolo che quelli multivalore vengono visualizzati come espressioni semplici che iniziano con il simbolo @. Ad esempio, un parametro denominato Store appare come [@Store]. Per ulteriori informazioni, vedere Informazioni sulle espressioni semplici e complesse (Generatore report 2.0).
Per impostare la proprietà multivalore per un parametro, selezionare l'opzione Consenti più valori nella finestra di dialogo Proprietà parametri report. È possibile impostare su multivalore qualsiasi tipo di parametro ad eccezione di Boolean.
I parametri multivalore vengono utilizzati principalmente per consentire una clausola di restrizione della query, ad esempio la clausola WHERE di Transact-SQL o del filtro MDX per testare l'inclusione in un set di valori anziché l'uguaglianza a un singolo valore. Per ulteriori informazioni sulla creazione di parametri multivalore, vedere Esercitazione: Aggiunta di parametri per il filtraggio dei dati del report (Generatore report 2.0) e Creazione dei parametri del report e impostazione delle relative proprietà (Generatore report 2.0).
![]() |
---|
In qualsiasi report che includa un parametro di tipo String accertarsi di utilizzare un elenco di valori disponibili, anche noto come elenco di valori validi, e assicurarsi che ogni utente che esegue il report disponga solo delle autorizzazioni necessarie per visualizzare i dati del report. Quando si definisce un parametro di tipo String, viene visualizzata una casella di testo che può accettare qualsiasi valore. Un elenco di valori disponibili consente di limitare i valori che è possibile immettere. Se un parametro di report è correlato a un parametro di query e non si utilizza un elenco di valori disponibili, un utente potrebbe digitare nella casella di testo sintassi SQL, esponendo il report e il server a un potenziale attacco intrusivo nel codice SQL. Se l'utente dispone di autorizzazioni sufficienti per eseguire la nuova istruzione SQL, è possibile che nel server si verifichino risultati non desiderati. Se un parametro di report non è correlato a un parametro di query e i valori del parametro sono inclusi nel report, un utente potrebbe digitare nel valore del parametro un URL o la sintassi di un'espressione ed eseguire il rendering del report in formato Excel o HTML. Se il report viene quindi visualizzato da un altro utente che fa clic sul contenuto dei parametri di cui è stato eseguito il rendering, potrebbe venire inavvertitamente eseguito il collegamento o lo script dannoso. Per ridurre il rischio di eseguire inavvertitamente script dannosi, aprire solo report sottoposti a rendering provenienti da fonti attendibili. Per ulteriori informazioni su come proteggere i report, vedere "Protezione di report e risorse" nella documentazione di Reporting Services nella documentazione online di SQL Server. |
Scrittura di query per parametri di report multivalore
È possibile definire un parametro multivalore per qualsiasi parametro di report creato. Se tuttavia si desidera passare più valori di parametro a un'origine dati tramite la query, è necessario che siano soddisfatti i requisiti seguenti:
L'origine dati deve essere SQL Server, Oracle, Analysis Services, SAP BI NetWeaver o Hyperion Essbase.
L'origine dei dati non può essere una stored procedure. In Reporting Services non è supportato il passaggio di una matrice di parametri multivalore a una stored procedure.
Nella query è necessario utilizzare una clausola IN per specificare il parametro.
Nell'esempio seguente viene illustrato l'utilizzo di una parola chiave IN nella clausola WHERE di un'istruzione Transact-SQL. Per ulteriori informazioni sulla parola chiave IN o sui risultati restituiti da questa query, vedere "IN (Transact-SQL)" nella documentazione di SQL Server 2008 inclusa nella documentazione online di SQL Server.
SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.Title IN (@Title)
Per provare questo comportamento in un report, definire un set di dati utilizzando questa query. Modificare le proprietà del parametro di report Title creato automaticamente nel modo seguente:
Selezionare l'opzione Multivalore.
In Valori disponibili selezionare l'opzione Non da query. Lasciare vuota la colonna Etichetta e immettere l'elenco seguente nella colonna Valore: Design Engineer, Buyer, Marketing Assistant.
In Valori predefiniti immettere Buyer.
Eseguire l'anteprima. Selezionare combinazioni di valori diverse per Title e verificare che i risultati ottenuti siano quelli desiderati.
[!NOTA]
Il server di report riscrive le query per le origini dei dati che non sono in grado di elaborare i parametri come matrice. Per ottenere il risultato desiderato, è necessario riscrivere la query. La riscrittura della query viene attivata quando si definisce un parametro come multivalore e la query utilizza un'istruzione IN per specificare il parametro. Se si compila una query che non include l'istruzione IN, è importante tenere presente che si sta eludendo la logica che il server di report offre per supportare parametri multivalore.
Le espressioni di filtro per set di dati, aree dati e gruppi vengono definite nella scheda Filtro delle finestre di dialogo Proprietà corrispondenti. Se è stata definita un'espressione di filtro che fa riferimento a un parametro multivalore, sarà necessario utilizzare l'operatore IN nell'espressione. Le espressioni di filtro che utilizzano operatori diversi da IN genereranno errori di elaborazione. Per ulteriori informazioni, vedere Procedura: Aggiunta di un filtro (Generatore report 2.0).
Scrittura di espressioni che fanno riferimento a parametri multivalore
Quando in un'espressione si fa riferimento a un parametro, viene utilizzata la raccolta predefinita Parameters. Se si sceglie di includere parametri multivalore nelle espressioni, è necessario sapere come utilizzare sia un singolo valore che l'intera matrice di valori. Nella tabella seguente sono riportati esempi e descrizioni delle proprietà dei parametri impostati per consentire più valori.
Esempio |
Descrizione |
---|---|
Parameters!<ParameterName>.Value |
Matrice di valori di dati di tipo Variant per il parametro. |
Parameters!<ParameterName>.Label |
Matrice di stringhe che costituiscono le etichette del parametro. |
Parameters!<ParameterName>.IsMultiValue |
Proprietà booleana che indica se l'opzione Consenti più valori del parametro è stata selezionata. |
Parameters!<ParameterName>.Count |
Numero di valori inclusi nella matrice. |
Parameters!<ParameterName>.Value(0) |
Primo valore di una matrice multivalore. |
Parameters!<ParameterName>.Label(0) |
Prima etichetta di una matrice multivalore. |
Parameters!<ParameterName>.Value(Parameters! <ParameterName>.Count-1) |
Ultimo valore di una matrice multivalore. |
Parameters!<ParameterName>.Label(Parameters! <ParameterName>.Count-1) |
Ultima etichetta di una matrice multivalore. |
=Join(Parameters!<ParameterName>.Value,", ") |
Espressione che consente di concatenare in un'unica stringa tutti i valori della matrice di un parametro multivalore di tipo String. |
=Split("Value1, Value2, Value3",",") |
Accetta una stringa e crea una matrice di oggetti utilizzabili per il passaggio a un sottoreport o a un report drill-through che prevede un parametro multivalore. |
È possibile utilizzare le funzioni SPLIT e JOIN per separare o combinare i valori nella matrice di qualsiasi espressione. È possibile utilizzare le funzioni STRING e CINT per convertire i valori in stringhe o valori integer.
Per ulteriori informazioni ed esempi di parametri a valore singolo e multivalore nelle espressioni, vedere Utilizzo di riferimenti alla raccolta Parameters nelle espressioni (Generatore report 2.0).
Vedere anche