Lição 3: Adicionando parâmetros para selecionar vários valores em uma lista (SSRS)

Nesta lição, você alterará os parâmetros BusinessPersonID e DayoftheWeek de parâmetros de valor único para parâmetros de vários valores. Os parâmetros de vários valores permitem selecionar mais de um valor para um parâmetro de relatório. Para modificar o parâmetro de relatório BusinessPersonID, você alterará a consulta para o conjunto de dados AdventureWorks2008R22008 para testar o @BusinessPersonID no conjunto de valores selecionado em vez de equalizar para um único valor e verificará a propriedade de vários valores do parâmetro de relatório. Para modificar o parâmetro de relatório DayoftheWeek, você verificará a propriedade de vários valores, definirá os valores disponíveis de um novo conjunto de dados e fornecerá uma expressão para os valores padrão. Você criará um novo conjunto de dados para fornecer os valores disponíveis para o parâmetro DayoftheWeek. Finalmente, você adicionará uma caixa de texto ao relatório para exibir valores de parâmetros para as seleções de DayoftheWeek feitas.

Para substituir o conjunto de dados existente

  1. No painel Dados do Relatório, clique com o botão direito do mouse no conjunto de dados AdventureWorksDataset e clique em Propriedades do Conjunto de Dados.

  2. Em Fonte de Dados, verifique se o AdventureWorks_Ref está selecionado.

  3. Em Tipo de consulta, verifique se Texto está selecionado.

  4. Clique no botão Designer de Consulta para abrir o designer de consulta.

  5. Substitua o texto pela seguinte consulta na caixa de texto:

    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 IN (@BusinessPersonID)
    

    Esta é a mesma consulta anterior, mas uma condição foi alterada de igualdade para inclusão.

    AND soh.SalesPersonID IN (@BusinessPersonID)
    
  6. Clique no botão Executar (!). Quando os parâmetros de consulta forem solicitados, use a seguinte tabela para digitar valores. O designer de consulta não dá suporte a teste de parâmetros de vários valores.

    @StartDate

    1/1/2001

    @EndDate

    1/1/2003

    @BusinessPersonID

    290

  7. Clique em OK. 

    O conjunto de resultados é exibido para o vendedor Ranjit Varkey Chudukatil com BusinessPersonID = 290.

Para editar o parâmetro de relatório BusinessPersonID para aceitar vários valores

  1. No painel Dados do Relatório, expanda Parâmetros e clique duas vezes no parâmetro BusinessPersonID.

  2. Selecione a opção Permitir vários valores.

  3. Clique em OK. 

  4. Clique em Visualizar. O relatório é executado automaticamente. Uma lista suspensa para BusinessPersonID mostra todos os nomes dos vendedores.

ObservaçãoObservação

Um valor de (Selecionar Tudo) é fornecido como o primeiro valor em uma lista suspensa de valores disponíveis para um parâmetro de vários valores. Use essa caixa de seleção para selecionar tudo ou limpar todos os valores. Por padrão, todos os valores são selecionados.

  1. Alterne para o modo Design.

  2. No painel Dados do Relatório, clique com o botão direito do mouse em AdventureWorks_Ref e clique em Adicionar Conjunto de Dados. A caixa de diálogo Propriedades do Conjunto de Dados é aberta.

  3. No campo Nome, digite WeekDaysfromQuery.

  4. Em Tipo de consulta, verifique se Text está selecionado.

  5. Em Consulta, digite ou cole a seguinte cadeia de caracteres da consulta:

    SET DATEFIRST 1;
    SELECT DISTINCT 
       DATEPART(weekday, S.OrderDate) as WeekDayNumber,
       DATENAME(weekday, S.OrderDate) as Weekday
       FROM Sales.SalesOrderHeader S
    Order by WeekDayNumber
    
  6. Clique no botão Executar (!) na barra de ferramentas do designer de consultas. O conjunto de resultados mostra números ordinais e os dias da semana.

  7. Clique em OK duas vezes para sair da caixa de diálogo Propriedades do sistema.

    O conjunto de dados WeekDaysfromQuery é exibido no painel Dados do Relatório.

Para editar um parâmetro para aceitar valores vários, valores padrão e valores válidos

  1. No painel Dados do Relatório, expanda Parâmetros e clique duas vezes em DayoftheWeek. A caixa de diálogo Propriedades do Parâmetro do Relatório é aberta.

  2. Selecione Permitir vários valores.

  3. Clique em Valores Disponíveis.

  4. Selecione Obter valores de uma consulta.

  5. Em Conjunto de Dados, na lista suspensa, selecione WeekDaysfromQuery.

  6. Em Campo de valor, na lista suspensa, selecione Dia da Semana.

  7. Em Campo de rótulo, na lista suspensa, selecione Dia da Semana.

  8. Clique em Valores Padrão.

  9. Selecione Especificar valores.

  10. (Opcional) Selecione o valor existente Sexta-feira e clique em Excluir.

  11. Clique em Adicionar.

  12. Em Valor, digite Sábado.

  13. Clique em Adicionar.

  14. Em Valor, digite Domingo.

  15. Clique em OK. 

Para que seja possível visualizar o relatório, é necessário alterar a expressão de filtro definida para a região de dados Tabela para usar o operador IN porque o parâmetro DayoftheWeek aceita vários valores.

Para alterar um filtro para usar um parâmetro de vários valores

  1. Na exibição Design, clique com o botão direito do mouse na tabela e clique em Propriedades do Tablix. A caixa de diálogo Propriedades do Tablix é aberta.

  2. Clique em Filtros. Já existe um filtro que foi adicionado para DaysoftheWeek na Lição 1.

  3. Em Expressão, na lista suspensa, verifique se o valor é [Weekday].

  4. Verifique se Text está selecionado.

  5. Altere o Operador do sinal de igual (=) para o operador Em.

  6. Na caixa de texto Valor, na lista suspensa, verifique se o valor é [@DayoftheWeek].

  7. Clique em OK. 

    O filtro da tabela agora está definido para comparar o valor do campo Weekday com o valor do parâmetro DayoftheWeek usando o operador In. Quando você escolhe vários valores para o parâmetro do relatório, o filtro testará cada linha da tabela para ver se o campo Weekday existe na coleção DayoftheWeek.

  8. Clique em Visualizar. O relatório mostra o parâmetro do relatório DaysoftheWeek com os valores padrão Sábado e Domingo. Use a lista suspensa para selecionar vários valores para o parâmetro DayoftheWeek.

Próximas etapas

Você alterou propriedades de parâmetros de relatório de valor único para vários valores, com êxito. Você fez as alterações necessárias em uma consulta, em um filtro e em uma expressão para acomodar o uso de uma coleção de parâmetros de vários valores. Você aprendeu a usar parâmetros de vários valores em uma expressão. Na próxima lição, você aprenderá como criar parâmetros cujos valores são populados condicionalmente com base em um valor selecionado de um parâmetro anterior. Consulte Lição 4: Adicionando parâmetros em cascata (SSRS).

Consulte também

Conceitos