Lição 1: Adicionando parâmetros para filtrar relatórios por data (Construtor de Relatórios 2.0)
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. No Transact-SQL, os parâmetros de consulta começam com o símbolo @, enquanto os parâmetros de relatório exibidos no painel Dados do Relatório não.
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 (Construtor de Relatórios 2.0) tenha sido concluído.
Para abrir um relatório existente
Clique em Iniciar, aponte para Programas, para Construtor de Relatórios do Microsoft SQL Server 2008 e clique em Construtor de Relatórios 2.0.
No botão Construtor de Relatórios, clique em Abrir.
Navegue para Ordem de Venda. Este é o relatório criado no Tutorial: Criando um relatório de tabela básico (Construtor de Relatórios 2.0).
Clique em Abrir. A definição do relatório é aberta na exibição design.
Em seguida, você substituirá a consulta do conjunto de dados por uma consulta que contém um parâmetro de consulta.
Para substituir a consulta do conjunto de dados existente
No painel Dados do Relatório, clique com o botão direito do mouse no DataSet1 e clique em Consulta. O designer de consulta é aberto.
No painel de consulta, substitua o texto pela seguinte consulta:
SELECT SH.OrderDate ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesOrderHeader AS SH INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0 AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
Esta é a mesma consulta anterior, mas a cláusula ORDER BY foi removida e uma condição com dois parâmetros limitadores foi adicionada:
AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
Clique em Executar (!) na barra de ferramentas. A caixa de diálogo Definir Parâmetros de Consulta é aberta solicitando um valor para cada parâmetro.
Forneça dois valores para ver um conjunto de resultados filtrado:
Na coluna Valor do Parâmetro, digite um valor para @StartDate, por exemplo, 20010101.
Na coluna Valor do Parâmetro, digite um valor para @EndDate, por exemplo, 20030101.
Clique em OK.
O conjunto de resultados exibe um conjunto de dados com valores de pedidos dos anos 2001 e 2002.
Clique em OK.
No painel Dados do Relatório, expanda o nó Parâmetros para exibir os dois parâmetros do relatório, StartDate e EndDate, criados automaticamente com base nos parâmetros da consulta.
Após definir parâmetros de consulta que representam uma data ou hora, é necessário alterar o tipo de dados dos parâmetros do relatório para que correspondam.
Para alterar o tipo de dados e valores padrão de um parâmetro de relatório
No painel Dados do Relatório, clique com o botão direito do mouse em StartDate e clique em Propriedades do Parâmetro.
Verifique se o nome do parâmetro é StartDate e se o prompt é Data de Início.
Em Tipo de dados, selecione Date/Time. Isso define o tipo de dados de parâmetro de relatório salvo na definição de relatório.
Clique em OK.
No painel Dados do Relatório, clique duas vezes em EndDate. Verifique o nome e os valores do prompt.
Em Tipo de dados, selecione Date/Time.
Clique em OK.
Clique em Executar para visualizar o relatório. 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.
Forneça dois valores de parâmetros para executar o relatório. Você pode usar o controle de calendário ou apenas digitar as datas seguintes em:
Na caixa de texto do parâmetro StartDate, digite 2001-01-01.
Na caixa de texto do parâmetro EndDate, digite 2003-01-01.
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
Alterne para a 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.
Clique em Valores Padrão.
Selecione a opção Especificar valores. O botão Adicionar e uma grade de Valor vazia são exibidos.
Clique em Adicionar. Uma linha vazia é adicionada à grade.
Na caixa de texto Valor, substitua o texto padrão (Null) e digite 2001-01-01.
Clique em OK.
No painel Design de Relatório, clique duas vezes em EndDate.
Clique em Valores Padrão.
Selecione a opção Especificar valores.
Clique em Adicionar.
Digite 2003-01-01.
Clique em OK.
Clique em Visualizar. O relatório é executado imediatamente porque cada parâmetro tem um valor padrão.
Para adicionar um novo campo à consulta para ser usado para filtragem
Alterne para a exibição Design.
Clique com o botão direito do mouse no conjunto de dados DataSet1 e selecione Propriedades do Conjunto de Dados. Abra o designer de consulta e substitua a consulta pela nova consulta a seguir:
SELECT SH.OrderDate ,DATENAME(weekday, SH.OrderDate) as Weekday ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesOrderHeader AS SH INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0 AND (SH.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.
Clique em Executar (!). A caixa de diálogo Definir Parâmetros de Consulta é aberta.
Na coluna Valor do Parâmetro, digite um valor para @StartDate, por exemplo, 20010101.
Na coluna Valor do Parâmetro, digite um valor para @EndDate, por exemplo, 20030101.
Clique em OK. Você deve ver uma nova coluna no conjunto de resultados rotulada como Weekday.
Clique duas vezes em OK. No painel Dados do Relatório, verifique se Weekday é um campo.
Agora que a tabela tem dados que identificam o dia da semana, você pode adicionar um filtro de forma que apenas as vendas em um dia específico da semana sejam usadas no relatório. Para ajudar a verificar isso, você pode exibir o dia da semana com a data do pedido de venda.
Para formatar a data na tabela
Alterne para a exibição Design.
Clique na célula com a expressão de campo OrderDate. Na guia Início, no grupo Número, clique no iniciador de caixa de diálogo.
Em Categoria, verifique se a opção Data está selecionada.
Na caixa Tipo, selecione um tipo de data que exiba o dia da semana. Por exemplo, para a configuração regional Inglês (Estados Unidos), você pode selecionar segunda-feira, janeiro 31, 2000.
Clique em OK.
Clique em Executar para visualizar o relatório. A data na primeira coluna da tabela exibe o dia da semana e também a data de calendário.
Em seguida, você adicionará um parâmetro para permitir que o usuário filtre pelo dia da semana.
Para adicionar um novo parâmetro de relatório
Alterne para a exibição Design.
No painel Dados do Relatório, clique em Novo e em Parâmetro. A caixa de diálogo Propriedades do Parâmetro do Relatório é aberta.
Em Nome, digite DayoftheWeek.
Em Prompt, digite Filtrar pelo dia da semana:.
Verifique se o tipo de dados é Text.
Clique em Valores padrão.
Selecione a opção Especificar valores. O botão Adicionar e uma grade de Valor vazia são exibidos.
Clique em Adicionar.
Digite Sexta-feira.
Clique em OK.
Em seguida, você adicionará um filtro para exibir apenas o valor escolhido para o parâmetro DayoftheWeek. Você pode adicionar um filtro à tabela ou ao conjunto de dados. Este relatório tem uma tabela e um gráfico que exibem os mesmos dados. Adicione o filtro à tabela se você quiser exibir os dados filtrados na tabela apenas. Adicione o filtro ao conjunto de dados se você quiser que a tabela e o gráfico exibam os dados filtrados. No procedimento a seguir, você definirá o filtro no conjunto de dados.
Para definir um filtro de conjunto de dados com uma expressão de parâmetro
Na exibição Design, no painel Dados do Relatório, clique com o botão direito do mouse em DataSet1 e clique em Propriedades do Conjunto de Dados.
Clique em Filtros.
Clique em Adicionar. Uma linha vazia é adicionada à grade.
Em Expressão, na lista suspensa, selecione [Weekday].
Verifique se Operador exibe o sinal de igual (=).
Clique no botão de expressão (fx) próximo à caixa de texto Valor. A caixa de diálogo Expressão é aberta.
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.
Clique em OK.
Valor exibe a expressão simples para o parâmetro DayoftheWeek: [@DayoftheWeek].
Clique em OK.
O filtro do conjunto de dados agora está definido para comparar o valor no campo Weekday com o valor do parâmetro para DayoftheWeek. Por exemplo, quando você insere o valor Sexta-feira na barra de ferramentas do relatório para DayoftheWeek, o processador de relatório processará somente as linhas da tabela em que o valor do campo Weekday seja Sexta-feira.
Clique em Visualizar. Como todos os parâmetros têm valores padrão, o relatório é executado automaticamente. A tabela e o gráfico mostram somente valores que estão dentro do intervalo de datas definido por StartDate e EndDate e que ocorrem em uma sexta-feira. Para este conjunto de dados, somente três datas caem em uma sexta-feira:
1 de fevereiro de 2002
1 de março de 2002
1 de dezembro de 2002
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 em um conjunto de dados 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 (Construtor de Relatórios 2.0).