none
public ActionResult Report RRS feed

  • Pergunta

  • Olá, alguém tem alguma sugestão?

    ao tentar renderizar uma tabela acima com Report para PDF ocorre que todas as linhas das tabelas assumem o dados do primeiro registro, abaixo o codigo:

     public ActionResult Report4(string id, int codigo)
            {
                LocalReport lr = new LocalReport();
                string path = Path.Combine(Server.MapPath("~/Reporter"), "Parasito.rdlc");
                if (System.IO.File.Exists(path))
                {
                    lr.ReportPath = path;
                }
                else
                {
                    return View("Parasito");
                }
                var cm3 = db.spObservacaoParasito(codigo).ToArray();
                var cm = db.spDosificacao(codigo).ToArray();
                var cm2 = db.spIntervaloDosificacoes(codigo).ToArray();
                var cm0 = db.spDosificacao1(codigo).ToArray();
                var cm4 = db.spIntervaloDosificacoes1(codigo).ToArray();
                var cm1 = db.spDosificacao2(codigo).ToArray();        
                var cm5 = db.spIntervaloDosificacoes2(codigo).ToArray();
    
                ReportDataSource rd3 = new ReportDataSource("DataSet2", cm3);
                ReportDataSource rd = new ReportDataSource("DataSet1", cm);
                ReportDataSource rd2 = new ReportDataSource("DataSet3", cm2);
                ReportDataSource rd0 = new ReportDataSource("Dosificacao1", cm0);
                ReportDataSource rd4 = new ReportDataSource("Intervalo1", cm4);
                ReportDataSource rd1 = new ReportDataSource("Dosificacao2", cm1);        
                ReportDataSource rd5 = new ReportDataSource("Intervalo2", cm5);
    
                lr.DataSources.Add(rd3);
                lr.DataSources.Add(rd);
                lr.DataSources.Add(rd2);
                lr.DataSources.Add(rd0);
                lr.DataSources.Add(rd4);
                lr.DataSources.Add(rd1);          
                lr.DataSources.Add(rd5);
    
                string reportType = id;
                string mimeType;
                string encoding;
                string fileNameExtension;
    
                string deviceInfo =
    
                "<DeviceInfo>" +
                "  <OutputFormat>" + id + "</OutputFormat>" +
                "  <PageWidth>5.83in</PageWidth>" +
                "  <PageHeight>8.27in</PageHeight>" +
                "  <MarginTop>0.1in</MarginTop>" +
                "  <MarginLeft>0.1in</MarginLeft>" +
                "  <MarginRight>0.1in</MarginRight>" +
                "  <MarginBottom>0.1in</MarginBottom>" +
                "</DeviceInfo>";
    
                Warning[] warnings;
                string[] streams;
                byte[] renderedBytes;
    
                renderedBytes = lr.Render(
                    reportType,
                    deviceInfo,
                    out mimeType,
                    out encoding,
                    out fileNameExtension,
                    out streams,
                    out warnings);
    
    
                return File(renderedBytes, mimeType);
            }
     

    No arquivo rdcl eu opero com tablix e em cada campo eu descrevo cada dataset do código report, conforme exemplo abaixo:

    =First(FormatDateTime(Fields!data_atividade.Value, DateFormat.ShortDate), "DataSet1")

    Na view eu carrego o PDF com o Script abaixo:

    function fcGerarPDF4() {
            window.location.href = "@Url.Action("Report4", "AnimalCompanhia_", new { id = "PDF" })?codigo=" + document.getElementById("animal").value;
        }

    Executando a StoredProcedure em tela rederiza corretamente, assim como, executando no banco:

    sexta-feira, 21 de outubro de 2016 00:34

Todas as Respostas