none
Erro ao exportar Relatórios (Crystal Report) para PDF RRS feed

  • Pergunta

  • Laércio,

    Acompanhei sua vídeo aula e tentei fazer o meu relatório em Visual Studio 2008 ASP.NET VB
    Cara, ele gera o relatório perfeitinho e tal, mas naquele Botão "Export" e "Print" ele fica sem ação e tal, como eu resolvo isso?
    Outro problema, criei então um botão Exportar para chamar o mesmo método da sua Vídeo Aula (irei colar ele aqui), criei a pasta "tmp" direitinho e fico de olho nela, o relatório é criado com o SessionID e tal, mas quando chega em "System.IO.File.Delete(strPDFTmp)" ele apaga o PDF da pasta "tmp" mas não exibe no Browser e dá o seguinte erro: "Erro em tempo de execução do Microsoft JScript: Sys.WebForms.PageRequestManagerParserErrorException: A mensagem recebida do Servidor não pôde ser analisada. Causas comuns desse erro são quando a resposta é modificada por chamadas para Response.Write(), filtros de resposta, HttpModules ou quando o rastreamento de servidor está habilitado. Detalhes: Erro ao analisar próximo de '%PDF-1.2 % 1.0 ob'."

    ps. Meu Browser é Internet Explorer 8

    Só falta isso pro meu relatório ficar perfeito..

    Sua Vídeo-Aula é sensacional, meus parabéns.

    Imports BLLged
    Imports DLLged
    Imports System
    
    Imports System.Data.SqlClient
    Imports System.Data
    
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    
    Imports System.Web.Configuration.WebConfigurationManager
    
    Partial Class Relatorios_Imprimir
        Inherits System.Web.UI.Page
    
        Private BLLGeral As New clsBLLGeral
        Private DLLConn As New clsDLLConnection
    
        Public Sub ExportarPDF()
            Dim crReportDocument As New ReportDocument
            Dim sql As New StringBuilder
            Dim dt As New DataTable()
    
            Try
                Dim strPathReport As String = Server.MapPath("~\Relatorios\rpt\RelAssunto.rpt")
                crReportDocument.Load(strPathReport)
    
                sql.Append("SELECT ")
                sql.Append("DESCRICAO, COD_ASSUNTO ")
                sql.Append("FROM ASSUNTO ")
                sql.Append("WHERE COD_EXCL = 0")
    
                Dim da As New SqlDataAdapter(sql.ToString, DLLConn.NewConn)
                da.Fill(dt)
    
                crReportDocument.SetDataSource(dt)
    
                Dim crExportOptions As ExportOptions
                Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
                Dim strPDFTmp As String = Server.MapPath("~\tmp") & "\" & Session.SessionID.ToString & ".pdf"
    
                crDiskFileDestinationOptions = New DiskFileDestinationOptions()
                crDiskFileDestinationOptions.DiskFileName = strPDFTmp
                crExportOptions = crReportDocument.ExportOptions
                With crExportOptions
                    .DestinationOptions = crDiskFileDestinationOptions
                    .ExportDestinationType = ExportDestinationType.DiskFile
                    .ExportFormatType = ExportFormatType.PortableDocFormat
                End With
                crReportDocument.Export()
    
                Response.ClearContent()
                Response.ClearHeaders()
                Response.ContentType = "application/pdf"
                Response.AddHeader("content-disposition", "inline; filename=ReportName.pdf")
                Response.WriteFile(strPDFTmp)
                Response.Flush()
                Response.Close()
    
                System.IO.File.Delete(strPDFTmp)
    
            Catch ex As Exception
                System.Diagnostics.Debug.WriteLine(ex.Message)
    
            Finally
                dt.Dispose()
                dt = Nothing
            End Try
        End Sub
    End Class

    Abraço
    sexta-feira, 11 de setembro de 2009 15:54

Respostas

  • Resolvi o meu colocando uma Trigger para o botão Exportar no UpdatePanel e funcionou perfeito.

    Abraço!
    • Sugerido como Resposta Daniel.X terça-feira, 20 de outubro de 2009 17:21
    • Marcado como Resposta Eduardo Petitto quarta-feira, 21 de outubro de 2009 11:19
    quinta-feira, 15 de outubro de 2009 11:54

Todas as Respostas

  • Eu também fiz como o Eduardo, mas em C# e estou resebendo a mesma mensagem de erro.
    Eu pensando se isso ocorre por eu estar usando masterpage e ajax, será que tem algo a ver?
    segunda-feira, 21 de setembro de 2009 13:11
  • Como eu desconfiava a mensagem de erro era do ajax.

    Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
    Details: Error parsing near '%PDF-1.2% 1 0 ob'.

    Então adicionei a seguinte linha:
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {

                }
                // Esta linha resolve o problema da mensagem de erro
                ScriptManager.GetCurrent(this).RegisterPostBackControl(btnImprimir);
            }

    Espero que ajude alguém.
    terça-feira, 22 de setembro de 2009 13:31
  • Resolvi o meu colocando uma Trigger para o botão Exportar no UpdatePanel e funcionou perfeito.

    Abraço!
    • Sugerido como Resposta Daniel.X terça-feira, 20 de outubro de 2009 17:21
    • Marcado como Resposta Eduardo Petitto quarta-feira, 21 de outubro de 2009 11:19
    quinta-feira, 15 de outubro de 2009 11:54
  • Tive o mesmo problema e fiz o que está descrito acima e funcionou perfeitamente.

    Luciano Martins.

    segunda-feira, 14 de fevereiro de 2011 16:31