Usuário com melhor resposta
Com Setar varios parametros em um reportViewer usando c# 2010

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
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
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.
-
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.
-
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
-
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