Lição 4: Adicionando parâmetros em cascata (SSRS)
Parâmetros em cascata fornecem um modo de gerenciar grandes quantidades de dados de relatório. Com os parâmetros em cascata, a lista de valores para um parâmetro depende do valor escolhido no parâmetro precedente. A ordem é importante para os parâmetros em cascata porque a consulta do conjunto de dados para um parâmetro posterior inclui referências a parâmetros anteriores na lista.
Nesta lição, você criará um relatório com uma consulta principal de conjunto de dados que define três parâmetros de consulta para categoria, subcategoria e produto. Você definirá três conjuntos de dados adicionais para fornecer valores disponíveis para cada parâmetro em cascata.
Para adicionar um novo relatório a um projeto de servidor de relatório aberto
No Gerenciador de Soluções, clique com o botão direito do mouse em Relatórios, aponte para Adicionar e clique em Novo Item.
Na caixa de diálogo Adicionar Novo Item, em Modelos, clique em Relatório.
Em Nome, digite CascadingParameters.rdl e clique em Adicionar.
O Designer de Relatórios abre e exibe o novo arquivo .rdl na exibição Design.
Para criar uma referência a uma fonte de dados compartilhada
No painel Dados do Relatório, clique em Nova e, em seguida, em Fonte de Dados.
Em Nome, digite AdventureWorks_Ref.
Selecione Usar referência da fonte de dados compartilhada.
Na lista suspensa, selecione AdventureWorks.
Clique em OK.
Para criar o conjunto de dados principal com uma consulta e parâmetros de consulta
No painel Dados do Relatório, clique com o botão direito do mouse na fonte de dados AdventureWorks_Ref e clique em Adicionar Conjunto de Dados.
Em Nome, digite SalesbyCategory.
Em Fonte de Dados, verifique se AdventureWorks_Ref está selecionado.
Em Tipo de consulta, verifique se Texto está selecionado.
Abaixo do painel de consulta, clique em Designer de Consulta.
Clique em Editar como Texto para alternar para o designer de consulta baseado em texto.
Cole a seguinte consulta:
SELECT PC.Name AS Category, PSC.Name AS Subcategory, P.Name AS Product, SOH.[OrderDate], SOH.SalesOrderNumber, SD.OrderQty, SD.LineTotal FROM [Sales].[SalesPerson] SP INNER JOIN [Sales].[SalesOrderHeader] SOH ON SP.[BusinessEntityID] = SOH.[SalesPersonID] INNER JOIN Sales.SalesOrderDetail SD ON SD.SalesOrderID = SOH.SalesOrderID INNER JOIN Production.Product P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory PSC ON P.ProductSubcategoryID = PSC.ProductSubcategoryID INNER JOIN Production.ProductCategory PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE (PC.Name = (@Category) AND PSC.Name = (@Subcategory) AND P.Name = (@Product))
A consulta agora inclui os parâmetros de consulta @Category, @Subcategory e @Product.
Clique em Executar (!) para ver o conjunto de resultados. A caixa de diálogo Definir Parâmetros de Consulta é exibida.
Na coluna Valor do Parâmetro, digite um valor para cada parâmetro de consulta usando a tabela abaixo.
Nome do Parâmetro
Valor do Parâmetro
@Category
Componentes
@Subcategory
Freios
@Product
Freios dianteiros
Clique em OK.
O conjunto de resultados contém uma lista de números de pedidos de venda, agrupados por data, para freios dianteiros.
Ao executar a consulta, cada parâmetro de consulta gera um parâmetro de relatório correspondente. Clique em OK duas vezes para encerrar o designer de consulta e a caixa de diálogo.
(Opcional) No painel Dados do Relatório, expanda o nó Parâmetros e verifique se os seguintes parâmetros de relatório aparecem: Category, Subcategory e Product.
(Opcional) O valor de cada parâmetro de consulta de conjunto de dados é associado a um parâmetro de relatório de mesmo nome. Para verificar isso, no painel Dados do Relatório, clique com o botão direito do mouse em SalesbyCategory e clique em Propriedades do Conjunto de Dados.
Clique em Parâmetros.
No coluna Nome do Parâmetro, verifique se os nomes são @Category, @Subcategory e @Product.
No coluna Valor do Parâmetro, verifique se os valores são [@Category], [@Subcategory] e [@Product].
Essas expressões simples referem-se aos parâmetros de relatório exibidos no painel Dados do Relatório.
Em seguida, você criará um conjunto de dados para fornecer valores para cada parâmetro de relatório em tempo de execução. Os valores irão popular os valores disponíveis e também fornecer valores padrão de forma que o relatório seja executado automaticamente.
Para definir um conjunto de dados de valores válido para um parâmetro de relatório
No painel Dados do Relatório, clique com o botão direito do mouse em AdventureWorks_Ref e clique em Adicionar Conjunto de Dados.
Em Nome, digite CategoryValues.
Em Fonte de Dados, verifique se AdventureWorks_Ref está selecionado.
Em Tipo de consulta, verifique se Texto está definido.
Abaixo do painel Consulta, clique em Designer de Consulta.
Clique em Editar como Texto para alternar para o designer de consulta baseado em texto.
Cole o seguinte texto de consulta no painel Consulta:
SELECT DISTINCT Name AS Category FROM Production.ProductCategory
O comando SELECT DISTINCT recupera apenas valores exclusivos de uma coluna.
Clique em Executar (!) para ver o conjunto de resultados. A coluna Category é exibida com quatro valores: Acessórios, Bicicletas, Vestuário e Componentes.
Clique em OK.
Em seguida, defina as propriedades para o parâmetro de relatório Category a fim de usar valores dessa consulta para obter seus valores disponíveis e seus valores padrão.
Para definir os valores disponíveis e valores padrão para um parâmetro de relatório
No painel Dados do Relatório, na pasta Parâmetros, clique com o botão direito do mouse em Category e em Propriedades do Parâmetro.
Em Nome, verifique se o nome é Categoria.
Clique em Valores Disponíveis.
Clique em Obter valores de uma consulta. Três campos são exibidos.
Em Conjunto de Dados, na lista suspensa, selecione CategoryValues.
No campo Valor, clique em Categoria.
No campo Rótulo, clique em Categoria.
Clique em Valores Padrão.
Clique em Obter valores de uma consulta.
Em Conjunto de Dados, na lista suspensa, selecione CategoryValues.
No campo Valor, selecione Categoria.
Clique em OK.
Depois, você modifica o parâmetro @Subcategory para depender do valor selecionado para @Category.
Para adicionar o conjunto de dados dos valores para o parâmetro de relatório Subcategoria
No painel Dados do Relatório, clique com o botão direito do mouse em AdventureWorks_Ref e clique em Adicionar Conjunto de Dados.
Em Nome, digite SubcategoryValues.
Cole o seguinte texto de consulta no painel Consulta:
SELECT DISTINCT PSC.Name AS Subcategory FROM Production.ProductSubcategory AS PSC INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE PC.Name = (@Category)
Clique em OK.
O conjunto de dados SubcategoryValues é exibido no painel Dados do Relatório. Se você abrir o designer de consulta, executar a consulta e inserir Componentes como a categoria, o conjunto de resultados exibirá 14 linhas.
Em seguida, defina as propriedades do parâmetro de relatório @Subcategory para usar os valores dessa consulta para seus valores disponíveis e seus valores padrão.
Para definir os valores disponíveis e valores padrão para um parâmetro Subcategoria
No painel Dados do Relatório, na pasta Parâmetros, clique com o botão direito do mouse em Subcategory e em Propriedades do Parâmetro.
Clique em Valores Disponíveis.
Clique em Obter valores de uma consulta.
Em Conjunto de Dados, na lista suspensa, clique em SubcategoryValues.
No campo Valor, clique em Subcategoria.
No campo Rótulo, clique em Subcategoria.
Clique em Valores Padrão.
Clique em Obter valores de uma consulta.
Em Conjunto de Dados, na lista suspensa, clique em SubcategoryValues.
No campo Valor, clique em Subcategoria.
Clique em OK.
Crie um parâmetro @Product que depende do valor de @Category e do valor de @Subcategory.
Para adicionar o conjunto de dados dos valores para o parâmetro de relatório Produto
No painel Dados do Relatório, clique com o botão direito do mouse em AdventureWorks_Ref e clique em Adicionar Conjunto de Dados.
Em Nome, digite ProductValues.
Cole o seguinte texto de consulta no painel Consulta:
SELECT DISTINCT P.Name AS Product FROM Production.Product P INNER JOIN Production.ProductSubcategory AS PSC ON P.ProductSubcategoryID = PSC.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID WHERE (PC.Name = (@Category) AND PSC.Name = (@Subcategory))
Clique em OK.
Um conjunto de dados chamado ProductValues com um campo chamado Product é adicionado ao painel Dados do Relatório.
Agora, defina as propriedades para o parâmetro @Product a fim de usar valores dessa consulta para obter seus valores disponíveis e seus valores padrão.
Para definir os valores disponíveis e valores padrão para um parâmetro Produto
No painel Dados do Relatório, na pasta Parâmetros, clique com o botão direito do mouse em Produto e em Propriedades do Parâmetro.
Clique em Valores Disponíveis.
Clique em Obter valores de uma consulta.
Em Conjunto de Dados, na lista suspensa, clique em ProductValues.
No campo Valor, clique em Produto.
No campo de Rótulo, clique em Produto.
Clique em Valores Padrão.
Clique em Obter valores de uma consulta.
Em Conjunto de Dados, na lista suspensa, clique em ProductValues.
No campo Valor, clique em Produto.
Clique em OK.
Adicione uma tabela para que você possa ver o efeito de escolher um valor para cada parâmetro em cascata.
Para adicionar uma tabela a fim de exibir os resultados
Na exibição Design, adicione uma Tabela.
No painel Dados do Relatório, no conjunto de dados SalesbyCategory, arraste os seguintes campos para as 3 células na linha de detalhes para a tabela: SalesOrderNumber, OrderQty, LineTotal.
Arraste Category do conjunto de dados de SalesbyCategory para o painel RowGroups e solte-a sobre o grupo Detalhes.
Arraste Subcategory do conjunto de dados de SalesbyCategory para o painel Grupos de Linhas e solte-a sob Category.
Arraste Product do conjunto de dados de SalesbyCategory para o painel Grupos de Linhas e solte-a sob Subcategory.
Arraste OrderDate do conjunto de dados de SalesbyCategory para o painel Grupos de Linhas e solte-a sob Product.
(Opcional) Formate as seguintes células: [LineTotal] como Moeda, [OrderDate] como Data.
Para testar os parâmetros em cascata
Clique em Visualizar.
O relatório é executado automaticamente porque você definiu o padrão para cada parâmetro de relatório.
Na lista suspensa Categoria, selecione Componentes.
Na lista suspensa Subcategoria, selecione Freios.
Na lista suspensa Produto, selecione Freios Dianteiros.
Observe que, ao selecionar cada parâmetro sucessivamente, a lista suspensa para o parâmetro seguinte mostra apenas os valores válidos baseados nas suas opções anteriores.
Na barra de ferramentas do visualizador de relatórios, clique em Exibir Relatório.
O relatório exibe os número de ordem de venda com quantidade da ordem e os totais de linha para as ordens que incluem o produto "freios dianteiros". A tabela exibe as ordens de venda organizadas por categoria, subcategoria, produto e data da ordem.
Próximas etapas
Você criou com êxito um relatório exibindo ordens de venda que incluem um produto específico, usando parâmetros em cascata que filtram por categoria de produto, subcategoria e nome do produto. Na próxima lição, você aprenderá a passar um parâmetro para um relatório de detalhamento. Consulte Lição 5: Adicionando parâmetros a serem passados para um relatório de detalhamento (SSRS).