none
Com Setar varios parametros em um reportViewer usando c# 2010 RRS feed

  • Pergunta

  • Olá Pessoal

    Estou desenvolvendo uma aplicação em 3 camadas com c#, e no momento estou finalizando os relatórios desta.

    A minha dúvida é como posso setar os parametros de um relatorio do reportViewer, meu relatório possui 89 parametros. Gostaria de ajuda para quais são as diversar maneiras de como passar valores à esses parametros e seta-los no relatório.

    em um dos relatórios, que possui apenas 1 parametro, consegui utilisando esse código em c# no load do projeto:

                objBLL = new NotasFiscaisBLL(); //para realizar a busca no bando de dados (camada de regra de negocios)
                parametros = new List<ReportParameter>();

                //reportViewerNotasFiscais.LocalReport.ReleaseSandboxAppDomain();

                //1- A busca para relatorio retorna uma list, que é carregada no bindgingSource
                //NotasFiscaisBindingSource.DataSource = objBLL.BuscarRelatorio(codProdutor, periodoAtivo);

                //2- A busca 2 para o relatorio que retorna um DataTable
                //NotasFiscaisBindingSource.DataSource = objBLL.BuscarRelatorio2(codProdutor, periodoAtivo);

                //3- Método Local por List
                NotasFiscaisBindingSource.DataSource = DataTableToList(objBLL.BuscarRelatorio2(codProdutor, periodoAtivo));

                //parametros.Add(new ReportParameter("totalQuantidades", CalcularQtdeGado().ToString())); - esse nao deu certo
                reportViewerNotasFiscais.LocalReport.SetParameters(new ReportParameter("totalQuantidades", CalcularQtdeGado().ToString()));

                reportViewerNotasFiscais.RefreshReport();

    o método CalcularQtdeGado() realiza um consulta sql no access 2007 e realiza um SUM para as contidades de entrada e saida, essa parte deu certo. Este relatorio esta OK, nao tem problemas para carregar dados e parametros.

    Porém, o outro relatório, não tenho ideia de como posso realizar esse operação para os 89 parametros, já tentei List, Arrays.. etc

    Como posso proceder?

    Obrigado

    segunda-feira, 7 de janeiro de 2013 16:57

Respostas

  • Já debugou para ver se os valores que o método retorna estão corretos?

    Como os parâmetors estão criados no report?

    Nas configurações do parâmetro (No design do report .rdlc), na opção "General" , marque o tipo do parâmetro como "text" e marque os dois primeiros checkboxs (allow black value, allow null value).

    O report apresenta algum erro?

    • Marcado como Resposta Junior_Brito terça-feira, 8 de janeiro de 2013 21:14
    terça-feira, 8 de janeiro de 2013 15:06

Todas as Respostas

  • Rapaz o método:

    ReportViewer1.LocalReport.SetParameters()

    Aceita tanto um objeto da classe "ReportParameter" quanto um IEnumerable do tipo "ReportParameter", ou seja, uma coleção de parâmetros evitando você setar um por um.

    O que você deve fazer é criar um List de ReportParameter contendo seus parâmetros e então passar este List para o método.

    terça-feira, 8 de janeiro de 2013 11:34
  • Olá

    Sim, eu fiz dessa maneira. Foi um das primeiras tentativas.

    private IEnumerable<ReportParameter> LoadParameters(int codProdutor, string periodoAtivo)
            {
                objBLLDMG = new DmgBLL();
    try
                {
                    IList<ReportParameter> reportParameter = new List<ReportParameter>
                    {
                        //Periodo 
                        new ReportParameter("rpPeriodoAtivo", periodoAtivo),
    
                        //Data Estoque 
                        new ReportParameter("rpDataEstoque", objBLLDMG.BuscarData(codProdutor, periodoAtivo, "Estoque").ToString()),
    
                        new ReportParameter("rpEstoqueBoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Estoque").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("rpEntradasBoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Entradas").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("rpNascBoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Nascimentos").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("rpMudaEra1BoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era E").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("Soma5BoisGordos", soma5BoisGordos.ToString()),
                        new ReportParameter("rpSaidasBoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Saídas").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("rpAbatesBoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Abates").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("rpMudaEra2BoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era S").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("rpPerdasBoisGordos", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Perdas").Rows[0]["BoisGordos"].ToString()),
                        new ReportParameter("Soma10BoisGordos", soma10BoisGordos.ToString()),
                        new ReportParameter("SaldosBoisGordos", saldoBoisGordos.ToString()),
    
                        new ReportParameter("rpEstoqueBois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Estoque").Rows[0]["Bois"].ToString()),
                        new ReportParameter("rpEntradasBois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Entradas").Rows[0]["Bois"].ToString()),
                        new ReportParameter("rpNascBois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Nascimentos").Rows[0]["Bois"].ToString()),
                        new ReportParameter("rpMudaEra1Bois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era E").Rows[0]["Bois"].ToString()),
                        new ReportParameter("Soma5Bois", soma5Bois.ToString()),
                        new ReportParameter("rpSaidasBois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Saídas").Rows[0]["Bois"].ToString()),
                        new ReportParameter("rpAbatesBois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Abates").Rows[0]["Bois"].ToString()),
                        new ReportParameter("rpMudaEra2Bois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era S").Rows[0]["Bois"].ToString()),
                        new ReportParameter("rpPerdasBois", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Perdas").Rows[0]["Bois"].ToString()),
                        new ReportParameter("Soma10Bois", soma10Bois.ToString()),
                        new ReportParameter("SaldosBois", saldoBois.ToString()),
    
                        new ReportParameter("rpEstoqueGarrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Estoque").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("rpEntradasGarrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Entradas").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("rpNascGarrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Nascimentos").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("rpMudaEra1Garrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era E").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("Soma5Garrotes", soma5Garrotes.ToString()),
                        new ReportParameter("rpSaidasGarrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Saídas").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("rpAbatesGarrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Abates").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("rpMudaEra2Garrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era S").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("rpPerdasGarrotes", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Perdas").Rows[0]["Garrotes"].ToString()),
                        new ReportParameter("Soma10Garrotes", soma10Garrotes.ToString()),
                        new ReportParameter("SaldosGarrotes", saldoGarrotes.ToString()),
    
                        new ReportParameter("rpEstoqueBezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Estoque").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("rpEntradasBezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Entradas").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("rpNascBezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Nascimentos").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("rpMudaEra1Bezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era E").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("Soma5Bezerros", soma5Bezerros.ToString()),
                        new ReportParameter("rpSaidasBezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Saídas").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("rpAbatesBezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Abates").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("rpMudaEra2Bezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era S").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("rpPerdasBezerros", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Perdas").Rows[0]["Bezerros"].ToString()),
                        new ReportParameter("Soma10Bezerros", soma10Bezerros.ToString()),
                        new ReportParameter("SaldosBezerros", saldoBezerros.ToString()),
    
                        new ReportParameter("rpEstoqueVacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Estoque").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("rpEntradasVacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Entradas").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("rpNascVacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Nascimentos").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("rpMudaEra1Vacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era E").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("Soma5Vacas", soma5Vacas.ToString()),
                        new ReportParameter("rpSaidasVacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Saídas").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("rpAbatesVacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Abates").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("rpMudaEra2Vacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era S").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("rpPerdasVacas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Perdas").Rows[0]["Vacas"].ToString()),
                        new ReportParameter("Soma10Vacas", soma10Vacas.ToString()),
                        new ReportParameter("SaldosVacas", saldoVacas.ToString()),
    
                        new ReportParameter("rpEstoqueNovilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Estoque").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("rpEntradasNovilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Entradas").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("rpNascNovilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Nascimentos").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("rpMudaEra1Novilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era E").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("Soma5Novilhas", soma5Novilhas.ToString()),
                        new ReportParameter("rpSaidasNovilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Saídas").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("rpAbatesNovilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Abates").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("rpMudaEra2Novilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era S").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("rpPerdasNovilhas", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Perdas").Rows[0]["Novilhas"].ToString()),
                        new ReportParameter("Soma10Novilhas", soma10Novilhas.ToString()),
                        new ReportParameter("SaldosNovilhas", saldoNovilhas.ToString()),
    
                        new ReportParameter("rpEstoqueBezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Estoque").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("rpEntradasBezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Entradas").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("rpNascBezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Nascimentos").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("rpMudaEra1Bezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era E").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("Soma5Bezerras", soma5Bezerras.ToString()),
                        new ReportParameter("rpSaidasBezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Saídas").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("rpAbatesBezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Abates").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("rpMudaEra2Bezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Muda Era S").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("rpPerdasBezerras", objBLLDMG.Buscar(codProdutor, periodoAtivo, "Perdas").Rows[0]["Bezerras"].ToString()),
                        new ReportParameter("Soma10Bezerras", soma10Bezerras.ToString()),
                        new ReportParameter("SaldosBezerras", saldoBezerras.ToString()),
    
                        new ReportParameter("rpEstoqueSomas", estoqueSomas.ToString()),
                        new ReportParameter("rpEntradasSomas", entradasSomas.ToString()),
                        new ReportParameter("rpNascSomas", nascSomas.ToString()),
                        new ReportParameter("rpMudaEra1Somas", mudaEra1Somas.ToString()),
                        new ReportParameter("Soma5Somas", soma5Somas.ToString()),
                        new ReportParameter("rpSaidasSomas", saidasSomas.ToString()),
                        new ReportParameter("rpAbatesSomas", abatesSomas.ToString()),
                        new ReportParameter("rpMudaEra2Somas", mudaEra2Somas.ToString()),
                        new ReportParameter("rpPerdasSomas", perdasSomas.ToString()),
                        new ReportParameter("Soma10Somas", soma10somas.ToString()),
                        new ReportParameter("SaldosSomas", saldoSomas.ToString())
    
                    };
    
                    return reportParameter;
                }
                catch (Exception ex)
                {
                    //ErrorSignal.FromCurrentContext().Raise(ex);
                    MessageBox.Show("Parâmetros não carregados",
                               "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
    

    O As Somas são calculadas dentro desse mesmo método, porém não as coloquei aqui, pois ficaria muito grande.

    Mesmo fazendo um IEnumerable, não carregou os valores para os parametros.

    Empaquei aqui.

    Att.

    terça-feira, 8 de janeiro de 2013 13:55
  • Já debugou para ver se os valores que o método retorna estão corretos?

    Como os parâmetors estão criados no report?

    Nas configurações do parâmetro (No design do report .rdlc), na opção "General" , marque o tipo do parâmetro como "text" e marque os dois primeiros checkboxs (allow black value, allow null value).

    O report apresenta algum erro?

    • Marcado como Resposta Junior_Brito terça-feira, 8 de janeiro de 2013 21:14
    terça-feira, 8 de janeiro de 2013 15:06
  • Já debugou para ver se os valores que o método retorna estão corretos?

    Como os parâmetors estão criados no report?

    Nas configurações do parâmetro (No design do report .rdlc), na opção "General" , marque o tipo do parâmetro como "text" e marque os dois primeiros checkboxs (allow black value, allow null value).

    O report apresenta algum erro?

    Marcos, já encontrei o erro.

    Enquanto viajava de carro, o a mente trabalhava em 2 plano e desvendou o mistério.

    Acontece que algumas consultas não retornam valores, pois não existem registro que atenda à consulta sql. logo, se um dos parametros nao é preeenchido o relatório não é carregado. Basta procurar quais as possiveis consultas que retornarão um valor nulo e utilizar o método "string.IsNullOrEmpty(Retorno-ConsultaSql)" em um conjunto de condições avaliando cada consulta realizada.

    Tipo:

    //Se a consulta de soma para entradas for nula
    
                    if (string.IsNullOrEmpty(Convert.ToString(objBLL.BuscarSoma(codProdutor, periodoAtivo, "Entrada").Rows[0]["Expr1000"].ToString())))
                    {
                        qtdeEntradas = 0;
                    }
                    else
                    {
                        qtdeEntradas = int.Parse(objBLL.BuscarSoma(codProdutor, periodoAtivo, "Entrada").Rows[0]["Expr1000"].ToString());
                    }

    Muito obrigado pelas dicas, e pela análise.

    Abraços

    terça-feira, 8 de janeiro de 2013 21:13