none
Erro em Apresentar resultados com Crystal Report RRS feed

  • Pergunta

  • Ola a todos,

    estou criando um report que exibe informações guardadas na minha base de dados referidas a um cliente.

    o meu objectivo é carregar a página e ter um textbox para receber o nome do paciente. Após a inserção do nome, será clicada num botão de procura e este deve gerar o relatório referido a esta pessoa. Fiz todo o tratamento do código:

    * adicionei um item "ProcedimentoExecutadoCrystalRep.rpt" onde preparei todo o meu relatorio, coloquei um Parameters Field "nome" que ficou configurado como: ({paciente.nome} = {?nome})   este para quando fizer a procura pelo nome para retornar tudo relativamente a essa pessoa.

    No Main Report Preview desse mesmo documento estou conseguindo visualizar o resultado, ao inserir o nome aparece tudo o que pretendo... funcionando...

    mas o problema esta na minha página que pretendo exibir os resultados...

    *adicionei um CrystalReportViewer na minha página onde o associei a um CrystalReportSource...

    *este CrystalReportSource vinculei ao CrystalReport criado anteriormente (ProcedimentoExecutadoCrystalRep.rpt). indiquei este caminho completo.

    *coloquei um texbox (txtUserName) e um botao (btnSearch) na pagina. No evento click do botao ficou assim:

    protected void btnSearch_Click(object sender, EventArgs e)
           {
            ReportDocument reportProcedimentos = new ReportDocument();
            reportProcedimentos.Load(Server.MapPath("~/secure/ProcedimentoExecutadoCrystalRep.rpt"));
            reportProcedimentos.SetParameterValue("nome", txtUserName.Text);
            CrystalReportViewer1.ReportSource = reportProcedimentos;
           }

    até aqui tudo beleza, mas na hora que carrego a minha pagina e pretendo exibir o resultado no browser é que ta todo o problema. escrevo o nome da pessoa e ao clicar no bota aparece esta mensagem:

    Erro
    Falha ao carregar o relatório.

    NÃO SEI o que está errado visto que o mesmo processo é feito no preview do report e este apresenta o resultado esperado, mas no browser não mostra nada.... alguem me ajude por favor. 

    quarta-feira, 2 de janeiro de 2013 13:36

Todas as Respostas

  • Flavio para relatórios assim acho mais fácil fazer assim, crio um dataset e nesse dataset crio um tableadapter com a minha consulta sql colocando na consulta no where tipo isso where id = @id. Isso identifica um parametro.

    Na página coloco o report e associo a ele um datasource e no datasource informo o tableadapter criado com a consulta.

    só tem um detalhe, vc coloca a execução do relatorio no postback da página, pq por padrão ele tentará executar sua página e como vc passa parametro para o datasource e no load da página esse parametro estará vazio sempre e dará erro. tem um exemplo ai

    f (!Page.IsPostBack)
                {
                    List<ReportParameter> parametros = new List<ReportParameter>();
                    string datainicio = Request.QueryString["dtini"];
                    string datafinal = Request.QueryString["dtfim"];
                    string rpnmdtini = datainicio.Substring(6, 4) + "-" + datainicio.Substring(3, 2) + "-" + datainicio.Substring(0, 2) + " 00:00:00";
                    string rbnbdtfim = datafinal.Substring(6, 4) + "-" + datafinal.Substring(3, 2) + "-" + datafinal.Substring(0, 2) + " 23:59:59";
                   // string escola = Convert.ToString(Session["Nomeempresa"]);
                    int entid = Convert.ToInt32( Request.QueryString["ent"]);
                    string adm = Request.QueryString["adm"];
                    string escola = "";
                    if (adm == "S")
                    {
                        var nomeescola = (from en in context.TB_ENT_ENTIDADE where en.ENT_ID == entid select new { en.ENT_NOME }).First();
                        escola = nomeescola.ENT_NOME;
                    }
                    else
                    {
                        escola = Session["Nomeempresa"].ToString(); 
                    }
                   
                    string usuario = Session["NomeUsuario"].ToString();
                    string ent = Request.QueryString["ent"]; 
    
                    parametros.Add(new ReportParameter("dtini", datainicio));
                    parametros.Add(new ReportParameter("dtfim", datafinal));
                    parametros.Add(new ReportParameter("Escola", escola));
                    parametros.Add(new ReportParameter("usuario", usuario));
                    parametros.Add(new ReportParameter("ent", ent));
    
                    RvBateu.LocalReport.SetParameters(parametros);
     
                }
            }
    
            protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
            {
                string datainicial = Request.QueryString["dtini"].Substring(6, 4) + "-" + Request.QueryString["dtini"].Substring(3, 2) + "-" + Request.QueryString["dtini"].Substring(0, 2) +  " 00:00:00";
                string datafinal = Request.QueryString["dtfim"].Substring(6, 4) + "-" + Request.QueryString["dtfim"].Substring(3, 2) + "-" + Request.QueryString["dtfim"].Substring(0, 2) +  " 23:59:59";
    
                e.InputParameters["dtini"] = datainicial;
                e.InputParameters["dtfim"] = datafinal;
                e.InputParameters["ent"] = Request.QueryString["ent"];
    
            }
        }


    Junior

    quarta-feira, 2 de janeiro de 2013 14:06
  • obrigado pela ajuda Junior, mas esse exemplo aqui estou achando muito complicado, visto que estou iniciando com o CR e o exemplo que implementei achei mais facil do que utilizar DataSet...

    como ja estou entendendo algumas ideias de criar o CR como descrevi então gostaria de ter uma ajuda para terminar esse codigo que disponibilizei. o erro esta somente em apanhar este valor..noa sei pq nao está mostrando..

    quarta-feira, 2 de janeiro de 2013 14:19
  • Flavio vc debugou sua página ? onde exatamente está o erro ?

    faça o seguinte :

    string nome = txtusername.text;

    if (!String.IsnullorEmpty(nome))

    {

       coloque seu código aqui.

    }


    Junior

    quinta-feira, 3 de janeiro de 2013 11:18
  • fiz exactamente  o que indicaste Junior, mas continua sem apresentar o resultado.

    string nome = txtUserName.Text;

            if (!String.IsNullOrEmpty(nome))

            {
                ReportDocument reportProcedimentos = new ReportDocument();
                reportProcedimentos.Load(Server.MapPath("~/secure/ProcedimentoExecutadoCrystalRep.rpt"));
                reportProcedimentos.SetParameterValue("nome", txtUserName.Text);
                CrystalReportViewer1.ReportSource = reportProcedimentos;
                Label1.Text = txtUserName.Text;

            }

    coloquei um label para certificar que o nome que estou passando no textbox corresponde com o que pretendo trabalhar. e no codigo esse nome é mostrado, mas continua com o mesmo erro ao mostrar o relatorio

    Erro
    Falha ao carregar o relatório.

    quinta-feira, 3 de janeiro de 2013 13:46
  • vc já debugou o código para ver onde está o erro ?

    Junior

    quinta-feira, 3 de janeiro de 2013 13:50
  • sim fiz debug mas tudo funciona.. erro em si não apresenta no programa... somente não apresenta resultado como esperado e previsto no Preview do Crystal Report... como disse acima no "Main Report Preview " consigo inserir o nome e é me apresentado o resultado. mas quando faço debug e no browser ao introduzir o nome o CR não apresenta nada.. somente a falha ao carregar o relatório..
    quinta-feira, 3 de janeiro de 2013 16:06
  • Flavio não uso o Crystal uso o report viewer mais senti falta de vc adicionar os parametros ao report, no report viewer é assim

     RvBateu.LocalReport.SetParameters(parametros);


    Junior

    quinta-feira, 3 de janeiro de 2013 17:03
  • junior valeu, estou adicionando o unico parametro que preciso nesse codigo

    reportProcedimentos.SetParameterValue("nome", txtUserName.Text);

    quinta-feira, 3 de janeiro de 2013 17:42