Lezione 2: Aggiunta di parametri per la creazione di un elenco di valori disponibili
I valori disponibili, o valori validi, sono un elenco di valori che è possibile utilizzare per un parametro di report. L'autore del report può fornire valori validi restituiti da una query appositamente progettata per recuperare un set di valori dall'origine dati oppure può fornire un set di valori predefinito. Attraverso l'associazione di un set di valori disponibili a una query di set di dati eseguita durante l'elaborazione del report si fa in modo che solo i valori esistenti nel database possano essere selezionati nell'elenco a discesa.
In questa lezione verrà modificato un report relativo agli ordini di vendita in modo da presentare un elenco a discesa dei nomi dei venditori disponibili presenti nel database AdventureWorks2008. Verrà impostata una proprietà di tabella in modo che venga visualizzato un messaggio quando non sono presenti righe nel set di risultati per il valore di parametro selezionato. Quando si seleziona un nome e si visualizza il report, nel report verranno visualizzate solo le vendite del venditore corrispondente.
Per sostituire il set di dati esistente
Nel riquadro Dati report fare clic con il pulsante destro del mouse sul set di dati AdventureWorksDataset e scegliere Proprietà set di dati.
[!NOTA]
Se non è possibile visualizzare il riquadro Dati report, scegliere Dati report dal menu Visualizza.
In Origine dati verificare che sia selezionato AdventureWorks_Ref.
In Tipo di query verificare che sia selezionato Testo.
Fare clic su Progettazione query per aprirla.
Sostituire il testo nella casella di testo con la query seguente:
SELECT soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND soh.SalesPersonID = (@BusinessPersonID)
Si tratta di una query analoga a quella precedente, con l'aggiunta di una condizione che limita il set di risultati a un unico venditore:
AND soh.SalesPersonID = (@BusinessPersonID)
Fare clic sul pulsante Esegui (!). Quando vengono richiesti i parametri della query, utilizzare la tabella seguente per immettere i valori.
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
Fare clic su OK. Verrà visualizzato il set dei risultati per il venditore Ranjit Varkey Chudukatil con SalesPersonID = 290.
Per popolare un elenco dei valori validi per un parametro di report
Nel riquadro Dati report fare clic su Nuovo, quindi su Set di dati. Verrà visualizzata la finestra di dialogo Proprietà set di dati.
Nel campo Nome digitare BusinessPersons. Questo set di dati verrà utilizzato per popolare l'elenco dei valori validi per il parametro di report SalesPersonID.
Verificare che l'origine dati sia AdventureWorks_Ref.
Nel riquadro delle query incollare la query Transact-SQL seguente:
SELECT SP.BusinessEntityID, C.FirstName, C.LastName FROM Sales.SalesPerson AS SP INNER JOIN HumanResources.Employee AS E ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityID ORDER BY SP.BusinessEntityID
Fare due volte clic su OK. Verrà popolato un elenco di campi per il set di dati BusinessPersons. Tale set di dati verrà utilizzato per fornire valori validi per il parametro BusinessPersonID.
Nel set di dati BusinessPersons sono presenti campi denominati FirstName e LastName. Questi campo verranno successivamente concatenati in un unico campo denominato Name.
Per definire un campo calcolato nel riquadro Dati report
Nella barra degli strumenti del riquadro Dati report fare clic con il pulsante destro del mouse sul set di dati BusinessPersons, quindi scegliere Aggiungi campo calcolato. Verrà visualizzata la pagina Campi della finestra di dialogo Proprietà set di dati con una nuova riga aggiunta alla griglia.
Nell'ultima casella di testo Nome campo digitare Name.
Nella casella di testo Origine campo incollare l'espressione seguente:
=Fields!LastName.Value & ", " & Fields!FirstName.Value
Fare clic su OK.
Nel set di dati BusinessPersons del riquadro Dati report il nuovo campo Name viene visualizzato nella raccolta di campi relativi al set di dati.
Per popolare il parametro di report con un elenco dei valori disponibili
Nel riquadro Dati report fare espandere il nodo Parametri, fare clic con il pulsante destro del mouse su BusinessPersonID e scegliere Proprietà parametri.
In Messaggio di richiesta digitare Select business person.
In Tipo di dati selezionare Integer.
Fare clic su Valori disponibili.
Selezionare l'opzione Ottieni valori da una query.
Nell'elenco a discesa Set di dati selezionare BusinessPersons.
Nell'elenco a discesa Campo valori selezionare BusinessEntityID.
Nell'elenco a discesa Campo etichette selezionare Name.
Selezionando Name per l'etichetta, nell'elenco a discesa dei valori validi per il parametro BusinessEntityID verranno visualizzati i nomi anziché i numeri dei venditori.
Fare clic su Valori predefiniti.
Selezionare l'opzione Ottieni valori da una query.
Nell'elenco a discesa Set di dati selezionare BusinessPersons.
Nell'elenco a discesa Campo valori selezionare BusinessEntityID.
Fare clic su OK.
Fare clic sulla scheda Anteprima. Nel report verrà visualizzato un elenco a discesa con i nomi delle persone di affari.
Fare clic su Visualizza report. Selezionare gli altri valori di parametro per rivedere i risultati.
Passaggi successivi
In questo modo è stato aggiunto un elenco di valori disponibili per un parametro a un report esistente. Il passaggio successivo consiste nel modificare i parametri DayoftheWeek e SalesPersonID in parametri multivalore. Vedere Lezione 3: Aggiunta di parametri per la selezione di più valori in un elenco.