Lição 3: Adicionando parâmetros para selecionar vários valores em uma lista (Construtor de Relatórios 2.0)
Nesta lição, você obterá informações cobre como alterar um parâmetro para aceitar vários valores. Esses parâmetros são conhecidos como parâmetros de vários valores. Por padrão, um parâmetro aceita um único valor. Os parâmetros criados na lição anterior, BusinessPersonID e DayoftheWeek, aceitavam valores únicos. Para modificar um parâmetro para aceitar vários valores, você precisa saber se o parâmetro foi criado automaticamente de um parâmetro de consulta, como BusinessPersonID, ou se foi criado manualmente usando o painel Dados do Relatório, como DayoftheWeek.
Para modificar um parâmetro de relatório para aceitar vários valores, você precisa apenas definir uma propriedade de parâmetro de relatório. Se o parâmetro de relatório foi baseado em um parâmetro de consulta, você também deverá alterar a consulta. Se você usar o parâmetro em um filtro, deverá alterar o operador de filtro para especificar um conjunto de valores em vez de um único valor.
Para substituir o 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 com base em texto é aberto.
Substitua o texto pela seguinte consulta na caixa de texto:
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.SalesPerson SP INNER JOIN Sales.SalesOrderHeader AS SH ON SP.BusinessEntityID = SH.SalesPersonID 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.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND SH.SalesPersonID IN (@BusinessPersonID)
Esta é a mesma consulta anterior, mas a condição foi alterada de igualdade = para inclusão IN:
AND SH.SalesPersonID IN (@BusinessPersonID)
Clique no botão Executar (!). Quando os parâmetros da 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
20010101
@EndDate
20030101
@BusinessPersonID
290
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
No painel Dados do Relatório, expanda Parâmetros e clique duas vezes no parâmetro BusinessPersonID.
Selecione a opção Permitir vários valores.
Clique em OK.
Clique em Visualizar. O relatório é executado automaticamente. Uma lista suspensa para BusinessPersonID mostra todos os nomes dos vendedores.
Observaçã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. |
Para adicionar um novo conjunto de dados para popular os valores válidos para um parâmetro de relatório
Alterne para a exibição Design.
Na barra de ferramentas do painel Dados do Relatório, clique em Novo e, em seguida, em Conjunto de Dados. A caixa de diálogo Propriedades do Conjunto de Dados é aberta.
Em Nome, digite WeekDaysfromQuery.
Em Tipo de consulta, verifique se Texto está selecionado.
Clique em Designer de Consulta e em Editar como Texto.
No painel Consulta, cole a seguinte 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
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.
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
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.
Selecione Permitir vários valores.
Clique em Valores Disponíveis.
Selecione Obter valores de uma consulta.
Em Conjunto de Dados, na lista suspensa, selecione WeekDaysfromQuery.
Em Campo de valor, na lista suspensa, selecione WeekdayNumber.
Em Campo de rótulo, na lista suspensa, selecione Weekday.
Quando o usuário seleciona valores de parâmetros, ele seleciona dos rótulos, mas o relatório usa os valores. Isso é importante quando você define valores padrão ou um filtro. Os valores devem ser os valores inteiros do campo WeekdayNumber.
Clique em Valores Padrão.
Selecione Especificar valores.
Clique em Adicionar.
Em Valor, substitua Sexta-feira por 6. Como os valores são provenientes de um conjunto de dados que fornece um número e um nome de dia de semana, o valor padrão deve especificar o número do dia da semana. O valor 6 representa sábado.
Clique em Adicionar.
Em Valor, digite 7. Esse valor representa domingo.
Clique em OK.
Para que seja possível visualizar o relatório, é necessário alterar a expressão de filtro da 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
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. Já existe um filtro que foi adicionado para DayoftheWeek na Lição 1.
Em Expressão, na lista suspensa, verifique se o valor é [Weekday].
Altere o Operador do sinal de igual (=) para In.
Em Valor, digite [@DayoftheWeek.Label].
Especifique o rótulo de parâmetro de forma que o nome do dia de semana seja comparado com o campo de rótulo, não com o campo numérico do dia de semana.
Clique em OK.
O filtro da tabela agora está definido para comparar o valor do campo Weekday com o rótulo do parâmetro DayoftheWeek usando o operador In. Quando você escolher 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.
Clique em Executar para visualizar o relatório. O relatório mostra o parâmetro do relatório DaysoftheWeek com os valores padrão Sábado e Domingo, que são os rótulos dos valores padrão especificados. 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 usar 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 (Construtor de Relatórios 2.0).