none
Passando multiplos valores para um parametro no report RRS feed

  • Pergunta

  • Bom dia, desenvolvi um relatório que utiliza alguns parametros que aceitam multiplos valores e é baseado em stored procedure. Fiz os testes do relatório na propria interface do reporting services e tudo funcionou normalmente como esperado.

    Também criei uma função sql para fazer um split separando o valor por "," que eu passo no parametro para ele fazer um filtro WHERE CodigosCategoria IN (...)

    Este relatório deverá ser acessado por um website que temos. Para isso estou fazendo o seguinte:

    @CodigosCategoria é o parametro do meu relatorio que aceita multiplos valores.

    E estou passando o valor para ele da seguinte forma: 

    Dictionary<string, string[]> parametros = new Dictionary<string, string[]>();

    parametros.Add("CodigosCategoria", new string[] { listCategorias.Aggregate((i, j) => i + "," + j) });

    O resultado é o valor: Key="CodigosCategoria", Value="A,B,C,...".

    Para passar estes valores para o relatório estou fazendo da seguinte forma:

    ReportViewer ReportViewer = new ReportViewer();

    ReportViewer.ServerReport.SetParameters(parametros.Select(p => new ReportParameter(p.Key, p.Value)));

    Neste momento a Key é CodigosCategoria e o Value é "A,B,C".

    Quando eu chamo o método ReportViewer.Render(...,...,..) ele acusa o seguinte erro:

    Este relatório exige um valor padrão ou definido pelo usuário para o parâmetro de relatório 'CodigosCategoria'. Para fazer assinatura deste relatório ou para executá-lo, forneça um valor de parâmetro. (rsReportParameterValueNotSet)

    Como eu posso passar estes valores para este parametro??

    Deste já, grato!

    quarta-feira, 15 de agosto de 2012 14:39

Respostas

  • Já resolvi o problema:

    Nas propriedades do meu parametro especifiquei para ele a expressão para Default Values: =Join(Parameters!CodigosCategoria.Value,",");

    E no codigo que eu passava os parametros alterei a linha de codigo para:

    parametros.Add("CodigosCategoria", listCategorias.ToArray());

    O reporting services irá receber um array com várias posições e executar a expressão join que eu defini para concatenar os valores e executar a stored procedure.

    quarta-feira, 15 de agosto de 2012 15:22