Usando parâmetros para controlar dados do relatório (Construtor de Relatórios 2.0)

Os parâmetros de relatório podem ser usados de dois modos: para filtrar dados na fonte de dados ou filtrar dados no relatório. A filtragem de dados na fonte de dados pode melhorar o desempenho do processamento e a exibição de um relatório. Se você não puder filtrar dados na fonte, use parâmetros para filtrar dados de relatório no relatório. Também é possível usar parâmetros para classificar e organizar dados em um relatório.

Para obter uma visão geral dos dados de filtragem, consulte Filtrando os dados de um relatório (Construtor de Relatórios 2.0).

Use este tópico para saber mais sobre como filtrar dados usando parâmetros.

Filtrando dados na fonte de dados

Para filtrar dados na fonte de dados, use os parâmetros de consulta na consulta de conjunto de dados. Em alguns designers de consulta, você pode adicionar campos a um painel Filtro e selecionar uma opção de parâmetro para cada campo que queira como um parâmetro de relatório. Em outros designers de consulta, você pode adicionar parâmetros de consulta ao comando de consulta. Quando você salva a consulta, o texto de comando é analisado. Para cada parâmetro de consulta, um parâmetro de relatório correspondente é criado. Use o nó Parâmetros no painel Dados do Relatório para exibir a lista de parâmetros de relatório.

Quando um relatório é executado, o usuário seleciona valores para cada parâmetro de relatório, e os valores são passados para a consulta. Quando a consulta é executada na fonte de dados, apenas aqueles valores especificados pelo usuário são recuperados para o relatório. Também é possível especificar o prompt que rotula o parâmetro do relatório na barra de ferramentas de relatório.

Parâmetros de consulta

Os parâmetros de relatório são criados automaticamente quando os parâmetros de consulta estão definidos.

Ao definir um conjunto de dados, você especifica um tipo específico de fonte de dados, por exemplo, MicrosoftSQL Server. Quando você define a consulta de cada conjunto de dados, o designer de consulta associado identifica as variáveis dentro do texto de comando da consulta e cria um parâmetro de consulta para cada uma. Nem toda combinação de fonte de dados e provedor de dados oferecem suporte a consultas com variáveis. Para obter mais informações sobre a sintaxe da consulta esperada pela fonte de dados, consulte Usando parâmetros de consulta com fontes de dados específicas (Construtor de Relatórios 2.0).

Para uma fonte de dados SQL Server, geralmente as consultas incluem variáveis na cláusula WHERE de uma instrução Transact-SQL para limitar o escopo dos dados retornados quando uma consulta é executada. O designer de consulta relacional cria uma consulta automaticamente para você e fornece uma opção para criar uma variável de consulta para cada filtro definido. Para obter mais informações, consulte Interface de usuário do Designer de Consulta relacional (Construtor de Relatórios 2.0).

De modo semelhante, uma consulta de fonte de dados do Analysis Services geralmente inclui variáveis MDX usadas em uma cláusula FILTER. As consultas também podem incluir variáveis passadas como entradas para procedimentos armazenados ou funções definidas pelo usuário.

Sempre que a consulta de um conjunto de dados é modificada, a consulta é reprocessada. Se você alterar uma consulta removendo ou renomeando uma variável, os parâmetros de consulta refletirão essas alterações.

É possível criar parâmetros de conjunto de dados adicionais na página Parâmetros da caixa de diálogo Propriedades do Conjunto de Dados. Os parâmetros criados não são alterados quando a consulta é alterada.

O valor padrão de cada parâmetro de consulta é definido como uma expressão que é avaliada para o parâmetro de relatório correspondente. Para alterar o padrão, use a página Parâmetros da caixa de diálogo Propriedades do Conjunto de Dados. Por exemplo, para uma fonte de dados SQL Server, se o parâmetro de consulta for @MyParameter, o parâmetro de relatório será MyParameter e o valor de @MyParameter será definido para a expressão [@MyParameter]. Para obter mais informações, consulte Caixa de diálogo Propriedades do Conjunto de Dados, Parâmetros (Construtor de Relatórios 2.0). E possível editar os parâmetros de consulta e definir seus valores padrão manualmente. Para obter mais informações, consulte Como associar um parâmetro de consulta a um parâmetro de relatório (Construtor de Relatórios 2.0).

Os parâmetros de relatório criados automaticamente usam os seguintes padrões:

  • Valor único

  • Tipo de dados Text

  • Prompt definido para o nome do parâmetro

  • Nenhum valor padrão

  • Nenhum valor disponível

Você pode precisar alterar essas propriedades com base no tipo de dados que o parâmetro de consulta representa. Para obter mais informações, consulte Criando parâmetros de relatório e configurando propriedades de parâmetros de relatório (Construtor de Relatórios 2.0).

ObservaçãoObservação

Quando você remove ou altera o nome de um parâmetro de consulta, o parâmetro de relatório correspondente não é automaticamente removido ou alterado. Se você remover um parâmetro de consulta e não precisar do parâmetro de relatório correspondente, deverá excluí-lo manualmente. Se você alterar o nome de um parâmetro de consulta, quando a consulta for salva, um novo parâmetro de relatório correspondente ao nome alterado será criado. É possível renomear o parâmetro de relatório para que corresponda ao novo nome do parâmetro de consulta e atualizar as propriedades do parâmetro do conjunto de dados para vincular o parâmetro de consulta ao parâmetro de relatório.

No Construtor de Relatórios 1.0, os parâmetros de relatório são criados automaticamente quando um prompt está definido em uma cláusula de filtro.

Parâmetros dependentes ou em cascata

Ao criar uma consulta que usa vários parâmetros de consulta, é possível criar um conjunto de parâmetros em cascata. Os parâmetros em cascata fornecem uma maneira de filtrar um número muito grande de valores de parâmetros até um número menor de valores gerenciáveis. Por exemplo, suponha que uma consulta inclua os parâmetros @Category, @Subcategory e @Product, em que a lista de subcategorias seja dependente de @Category, e a lista de produtos seja dependente da @Subcategory. Quando um usuário seleciona um valor para o parâmetro de relatório Category, os valores de Subcategory são limitados aos valores válidos da categoria escolhida. Depois que o usuário seleciona um valor para Subcategory, as opções para Product já foram filtradas pela opção de categoria e subcategoria. Usando esta técnica, é possível reduzir as opções válidas para um parâmetro até um número de valores razoáveis.

Para criar parâmetros em cascata, inclua os seguintes itens no relatório:

  • A consulta do conjunto de dados principal que possui vários parâmetros de consulta relacionados.

  • Um lista ordenada de parâmetros de relatório, cada um associado a um parâmetro de consulta. Geralmente, eles são criados automaticamente a partir da consulta principal. Cada parâmetro dependente deve seguir o parâmetro do qual ele é dependente. A ordem de parâmetros pode ser alterada no painel Dados do Relatório, onde é possível mover os parâmetros para cima e para baixo na coleção. Para obter mais informações, consulte Com alterar a ordem de um parâmetro de relatório (Construtor de Relatórios 2.0).

  • Um conjunto de dados separado para cada parâmetro de relatório que fornece seus valores disponíveis. É importante usar a mesma ortografia com diferenciação de maiúsculas e minúsculas para cada parâmetro de consulta para que os parâmetros de consulta e os parâmetros de relatório sejam vinculados adequadamente. A consulta de cada conjunto de valores disponíveis para cada parâmetro de relatório deve fornecer apenas valores que fazem sentido no contexto da consulta principal.

No exemplo, o parâmetro de relatório Product é dependente de Subcategory que é dependente de Category. Category deve ter precedência, seguido por Subcategory e, em seguida, Product. A consulta do conjunto de dados que fornece valores disponíveis para Category deve mostrar todas as categorias válidas para a consulta principal. A consulta que fornece valores disponíveis para Subcategory depois que você tiver uma categoria escolhida, deve fornecer valores válidos para a Category fornecida, mais todas as restrições que existam na consulta principal.

Para obter mais informações, consulte Como adicionar parâmetros em cascata a um relatório (Construtor de Relatórios 2.0).

Filtrando dados do relatório após executar uma consulta

Também é possível criar parâmetros de relatório e usá-los em expressões de filtro para filtrar dados em um conjunto de dados do relatório, em uma região de dados ou em um grupo Tablix. Para obter mais informações, consulte Filtrando os dados de um relatório (Construtor de Relatórios 2.0) e Como adicionar um filtro (Construtor de Relatórios 2.0).

Os parâmetros de relatório fazem parte de uma definição de relatório quando você cria um relatório, mas que podem ser gerenciados independentemente após a publicação de um relatório. Depois que a definição de relatório é publicada, você pode modificar as propriedades de parâmetros usando o Gerenciador de Relatórios. Para obter mais informações, consulte "Configurando propriedades em um relatório publicado" na documentação do Reporting Services nos Manuais Online do SQL Server.

Trabalhando com valores válidos de alteração rápida de um parâmetro

Quando você especifica valores disponíveis que são alterados rapidamente, os valores podem tornar-se obsoletos antes do relatório ser executado. Isso pode fazer com que um usuário selecione um valor da lista que não será mais válido quando o valor for enviado e o relatório for executado. Para evitar isso, escreva consultas que retornem conjuntos de dados de listas de valores válidos que não sejam alterados quando um usuário típico selecionar um valor e executar o relatório.

Além disso, evite a alteração rápida de valores não consultados. Por exemplo, se você fornecer a data atual como um valor disponível, escreva uma expressão que use a propriedade DateTime.Today em vez da propriedade DateTime.Now. Isso elimina a alteração rápida da parte de hora do valor. Também é possível usar uma variável de relatório ou uma variável de grupo como uma maneira de calcular um valor uma vez e mantê-lo constante durante o processamento do relatório. Para obter mais informações, consulte Usando referências de coleções de variáveis de grupo e de relatório em expressões (Construtor de Relatórios 2.0).