none
ReportViewer - Visualizar o relatorio direto no .pdf RRS feed

  • Pergunta

  • Olá, estou usando Visual Studio 2010 e Report Viewer, gostaria que quando fosse abrir o relatorio no report ele já gerasse direto em pdf.

    Já tentei de varios jeitos, mas sem sucesso. No codigo abaixo esta aparecendo o seguinte erro: An error occurred during local report processing.

    Como posso resolver isso?!

    if (!IsPostBack)
          {
            RelatoriosTableAdapters.RepresentantesTableAdapter tableAdapter = new RelatoriosTableAdapters.RepresentantesTableAdapter();
            Relatorios.RepresentantesDataTable dataTable = new Relatorios.RepresentantesDataTable();
    
            dataTable.Merge(tableAdapter.GetData());
    
            rvRepresentantes.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local;
            rvRepresentantes.LocalReport.ReportPath = Server.MapPath("~/Relatorio/Representante.rdlc");
            rvRepresentantes.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("Relatorios.RepresentantesDataTable_GetData", ObjectDataSource1));
            //rvRepresentantes.DataBind();
    
            Warning[] warn = null;
            string[] streamids = null;
            string mimeType = "application/pdf";
            string encoding = string.Empty;
            string extension = string.Empty;        
            //byte[] byteViewer = null;
    
            byte[] byteViewer = rvRepresentantes.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warn);
            Response.Buffer = true;
            Response.Clear();
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "inline; filename= Representante.pdf");
            Response.BinaryWrite(byteViewer);
            Response.Flush();
            Response.End();
          }
    

     

    quinta-feira, 28 de julho de 2011 13:58

Respostas

  • Resolvido !!

    O codigo é examente esse, o unico problema era que eu estava passando o parametro errado.. ao invez de ser Relatorios.RepresentantesDataTable_GetData ... tem que ser o nome do DataSet que esta dentro do .rdlc

    Obrigada pela atenção.

    Carol

    • Marcado como Resposta Carolzinha_ quinta-feira, 28 de julho de 2011 20:28
    quinta-feira, 28 de julho de 2011 20:27

Todas as Respostas

  • Tenta somente com essa parte do code

    byte[] byteViewer = rvRepresentantes.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warn);
        Response.Buffer = true;
        Response.Clear();
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "inline; filename= Representante.pdf");
        Response.BinaryWrite(byteViewer);
    



    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
    quinta-feira, 28 de julho de 2011 18:13
    Moderador
  • Olá Seilor,

    Mas como vou definir o tipo das variaveis?! Só essa parte do codigo vai dar erro... :S

    Desde já agradeço pela atenção.

     

     

    quinta-feira, 28 de julho de 2011 19:03
  • Com Crystal Report é +- assim, as vezes ti ajuda.

    'Cria uma instância do ReportClass
    Dim relatorio As New CrystalDecisions.CrystalReports.Engine.ReportClass()

    Private Sub CarregaRelatorio()
    Dim NomePDF As String = String.Empty

    'Carrega as Tables
    Dim Ds As New media
    Dim Dt1 As New media.TabMedia

    Dt1 = Session("Tab_1")

    If Not Dt1 Is Nothing Then Dt1.CopyToDataTable(Ds.TabMedia, LoadOption.OverwriteChanges)

    relatorio.FileName = Server.MapPath("RelatorioMedia.rpt")

    NomePDF = "nomearquivo"  'sem pdf

    relatorio.SetDataSource(Ds)

    'parametros
    'Ocultar Grafico
    If (Not Dt1 Is Nothing) Then
     relatorio.SetParameterValue(1, IIf(Dt1.Rows.Count = 0, True, False))
    Else
     relatorio.SetParameterValue(1, True)
    End If

    relatorio.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, NomePDF)

    end sub

    Protected Sub reldeimpressao_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                CarregaRelatorio()
            End If
    End Sub 


    Living easy ... Living free ...
    quinta-feira, 28 de julho de 2011 19:15
  • Resolvido !!

    O codigo é examente esse, o unico problema era que eu estava passando o parametro errado.. ao invez de ser Relatorios.RepresentantesDataTable_GetData ... tem que ser o nome do DataSet que esta dentro do .rdlc

    Obrigada pela atenção.

    Carol

    • Marcado como Resposta Carolzinha_ quinta-feira, 28 de julho de 2011 20:28
    quinta-feira, 28 de julho de 2011 20:27