Lição 1: Adicionando parâmetros para filtrar relatórios por data (SSRS)

Com a inclusão de parâmetros para uma data de início e de término em uma consulta para seu relatório, é possível especificar um intervalo de datas que limite os dados recuperados da fonte de dados. É possível criar parâmetros adicionais para filtrar os dados depois deles serem recuperados da fonte de dados.

Nesta lição, você adicionará os @StartDate e @EndDate à consulta para limitar os dados recuperados da fonte de dados. Dois parâmetros de relatório, StartDate e EndDate, são criados automaticamente para você e são exibidos no painel Dados do Relatório. Os parâmetros diferenciam maiúsculas de minúsculas. Os parâmetros de consulta começam com o símbolo @, enquanto os parâmetros de relatório não usam esse símbolo.

Você definirá o tipo de dados dos parâmetros como DateTime e verá que um controle de calendário é exibido com a caixa de texto do parâmetro na barra de ferramentas do Report Viewer. Você definirá valores padrão para os parâmetros para que o relatório possa ser executado automaticamente. Finalmente, você criará um parâmetro de relatório DayofWeek que não está associado a um parâmetro de consulta e o usará para filtrar dados após eles serem recuperados da fonte de dados.

Este tutorial requer que você tenha o Tutorial: Criando um relatório de tabela básico tenha sido concluído.

Para abrir um projeto existente do servidor de relatório

  1. Clique em Iniciar, aponte para Todos os Programas, aponte para Microsoft SQL Server 2008 R2 e clique em Business Intelligence Development Studio.

  2. No menu Arquivo, aponte para Abrir e clique em Projeto/Solução.

  3. Clique em Tutoriale escolha Tutorial.sln. Este é o tutorial que foi criado no Tutorial: Criando um relatório de tabela básico.

  4. Clique em OK para abrir o projeto. O projeto Tutorial é exibido no Gerenciador de Soluções com um relatório chamado Sales Orders.rdl.

    Observação   Se o Gerenciador de Soluções não estiver visível, no menu Exibir, clique em Gerenciador de Soluções.

Para converter uma fonte de dados de inserida em compartilhada

  1. No painel Dados do Relatório, clique com o botão direito do mouse na fonte de dados AdventureWorks e selecione Converter em Fonte de Dados Compartilhada. Uma fonte de dados chamada AdventureWorks.rds é adicionada no Gerenciador de Soluções.

  2. No painel Dados do Relatório, clique com o botão direito na fonte de dados AdventureWorks e selecione Propriedades da Fonte de Dados.

  3. Em Nome, digite AdventureWorks_Ref.

  4. Clique em OK.

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.

    ObservaçãoObservação

    Se o painel Dados do Relatório não estiver visível, no menu Exibir, clique em Dados do Relatório.

  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], 
       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)))
    

    Esta é a mesma consulta anterior, mas em que uma condição com dois parâmetros limitadores foi adicionada:

    AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))

  6. Clique em Executar (!) na barra de ferramentas. A caixa de diálogo Definir Parâmetros de Consulta é aberta solicitando valores de parâmetros.

  7. Forneça dois valores para ver um conjunto de resultados filtrado:

    1. Na coluna Valor do Parâmetro, digite um valor para @StartDate, por exemplo, 1/31/2001.

    2. Na coluna Valor do Parâmetro, digite um valor para @EndDate, por exemplo, 1/31/2003.

  8. Clique em OK. 

  9. O conjunto de resultados exibe um conjunto de dados filtrado de pedidos dos anos 2001 e 2002.

  10. Clique duas vezes em OK. O painel Dados do Relatório é populado com os campos do conjunto de dados. Observe também que dois parâmetros de relatório, StartDate e EndDate, são criados e exibidos automaticamente sob o nó Parâmetros.

Após definir parâmetros de consulta para o relatório, é necessário alterar o tipo de dados dos parâmetros do relatório para que correspondam ao tipo de dados da fonte de dados. O padrão é Text que mapeia para o tipo de dados String na maioria das fontes de dados. Se os dados de origem forem numéricos, Booleanos, ou Data/Hora, será necessário alterar o tipo de dados do parâmetro do relatório.

Para alterar o tipo de dados e valores padrão de um parâmetro de relatório

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

  2. Verifique se o nome do parâmetro é StartDate e se o prompt é Data de Início.

  3. Em Tipo de dados, selecione Date/Time.

  4. Clique em OK.

  5. No painel Dados do Relatório, clique duas vezes em EndDate. Verifique o nome e os valores do prompt.

  6. Em Tipo de dados, selecione Date/Time.

  7. Clique em OK. 

  8. Clique em Visualizar. Os parâmetros StartDate e EndDate são exibidos na barra de ferramentas do relatório com um controle de calendário. Os controles de calendário são exibidos automaticamente quando o parâmetro é do tipo de dados Date/Time e você não definiu uma lista de valores disponíveis. Se você definir uma lista de valores disponíveis, uma lista suspensa de valores será exibida.

  9. Forneça dois valores de parâmetros para executar o relatório:

    1. Na caixa de texto do parâmetro Startdate, digite a data 1/31/2001.

    2. Na caixa de texto do parâmetro Enddate, digite a data 1/31/2003.

  10. Clique em Exibir Relatório. O relatório exibe só os dados que estão dentro dos valores dos parâmetros do relatório.

Depois de criar parâmetros de relatório para o relatório, é possível adicionar valores padrão para esses parâmetros. Parâmetros padrão permitem que o relatório seja executado automaticamente. Caso contrário, um usuário deve digitar valores de parâmetros para executar o relatório.

Para definir valores padrão para parâmetros

  1. Na exibição Design, no painel Dados do Relatório, expanda Parâmetros e clique duas vezes em StartDate. A caixa de diálogo Propriedades do Parâmetro do Relatório é aberta.

  2. Clique em Valores Padrão.

  3. Selecione a opção Especificar valores. O botão Adicionar e uma grade de Valor vazia são exibidos.

  4. Clique em Adicionar. Uma linha vazia é adicionada à grade.

  5. Clique na caixa de texto Valor e exclua o texto padrão (Nulo).

  6. Digite 1/31/2001. Clique em OK. 

  7. No painel Design de Relatório, clique duas vezes em EndDate.

  8. Clique em Valores Padrão.

  9. Selecione a opção Especificar valores.

  10. Clique em Adicionar.

  11. Digite 1/31/2003. Clique em OK.

  12. Clique em Visualizar. O relatório é executado imediatamente porque há valores padrão definidos para todos os parâmetros.

Para adicionar um novo campo à consulta para ser usado para filtragem

  1. Alterne para o modo Design.

  2. Clique com o botão direito do mouse no conjunto de dados AdventureWorksDataset e selecione Propriedades do Conjunto de Dados. Abra o designer de consulta e substitua a consulta pela nova consulta a seguir:

    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)))
    

    Na consulta, uma coluna calculada adicional é definida para o dia da semana em que ocorreu uma venda com a adição do seguinte comando à instrução SELECT:

    DATENAME(weekday, soh.OrderDate) as Weekday.

  3. Clique em Executar (!). A caixa de diálogo Definir Parâmetros de Consulta é aberta.

  4. Na coluna Valor do Parâmetro, digite um valor para @StartDate, por exemplo, 1/31/2001.

  5. Na coluna Valor do Parâmetro, digite um valor para @EndDate, por exemplo, 1/31/2003.

  6. Clique em OK. Você deve ver uma nova coluna no conjunto de resultados rotulada como Weekday.

  7. Clique duas vezes em OK. No painel Dados do Relatório, verifique se Weekday é um campo.

(Opcional) Para formatar a data nos dados da tabela que serão filtrados

  1. Clique na guia Design.

  2. Clique com o botão direito do mouse na célula com a expressão de campo [Date] e clique em Propriedades da Caixa de Texto.

  3. Clique em Número e, no campo Categoria, selecione Data.

  4. Na caixa Tipo, selecione Segunda-feira, 31 de janeiro de 2000.

  5. Clique em OK.

Para adicionar um novo parâmetro de relatório

  1. Na exibição Design, no painel Dados do Relatório, clique em Novo e clique em Parâmetro. A caixa de diálogo Propriedades do Parâmetro do Relatório é aberta.

  2. Em Nome, digite DayoftheWeek.

  3. Em Prompt, digite Filtrar pelo dia da semana:.

  4. Verifique se o tipo de dados é Text.

  5. Clique em Valores padrão.

  6. Selecione a opção Especificar valores. O botão Adicionar e uma grade de Valor vazia são exibidos.

  7. Clique em Adicionar.

  8. Digite Sexta-feira.

  9. Clique em OK.  

Para definir um filtro de tabela com uma expressão de parâmetro

  1. Na exibição Design, clique com o botão direito do mouse em um indicador de linha ou de coluna da tabela e selecione Propriedades do Tablix.

    ObservaçãoObservação

    A região de dados Tabela é um modelo baseado em uma região de dados Tablix.

  2. Clique em Filtros. Uma grade de filtro vazia é exibida.

  3. Clique em Adicionar. Uma linha vazia é adicionada à grade.

  4. Em Expressão, na lista suspensa, selecione [Weekday].

  5. Verifique se Operador exibe o sinal de igual (=).

  6. Clique no botão de expressão (fx) próximo à caixa de texto Valor. A caixa de diálogo Expressão é aberta.

  7. Em Categoria, clique em Parâmetros. A lista atual de parâmetros é exibida no painel Valores. Clique duas vezes em DayoftheWeek. A expressão de parâmetro é adicionada à caixa de texto de expressão. A seguinte expressão é exibida agora na caixa de texto de expressão: =Parameters!DayoftheWeek.Value.

  8. Clique em OK. Clique em OK novamente para sair da caixa de diálogo Propriedades do Tablix.

    O filtro da tabela agora está definido para comparar o valor no campo Weekday com o valor do parâmetro de DayoftheWeek. Por exemplo, quando você digita o valor Sexta-feira na barra de ferramentas do relatório para DayoftheWeek, o processador de relatório processa somente as linhas da tabela em que o valor do campo Weekday é Sexta-feira.

    Clique em Visualizar. Como todos os parâmetros têm valores padrão, o relatório é executado automaticamente. A tabela mostra somente valores que estão dentro do intervalo de datas definido por StartDate e EndDate e que ocorrem em uma sexta-feira.

Próximas etapas

Você definiu parâmetros de consulta e parâmetros de relatório, definiu valores padrão para os parâmetros e definiu um filtro na tabela com êxito. Na próxima lição, você aprenderá como criar uma lista de valores disponíveis ou valores válidos para um parâmetro. Consulte Lição 2: Adicionando parâmetros para criar uma lista de valores disponíveis (SSRS).