none
Demora no carregamento do Relatório/Gráfico em Report Viewer RRS feed

  • Pergunta

  • Tenho uma aplicação em Asp.net utilizando Ajax e faço meus relatórios e gráficos a partir do Report Viewer. Para os gráficos eu faço da seguinte forma: coloco um objeto Report Viewer de pequenas dimensões na tela, apenas para o usuário ver o gráfico rapidamente, o que realmente acontece. Porém tenho um botão ao lado desse gráfico que, ao ser clicado, gera um documento PDF, em uma nova tela, desse mesmo gráfico para ser posteriormente impresso, agora ocupando um tamanho A4. O meu problema é que esses gráficos estão demorando muito para serem criados em PDF, às vezes levando 10 minutos para a apresentação de apenas um gráfico. Minha pergunta é: será que existe alguma maneira rápida de exportar esses gráficos em PDF? a Rotina que utilizo para a exportação em PDF é:

        Private Sub ImprimirPDF()
            Try
                'passar pra pdf
                Dim aviso() As Warning = Nothing
                Dim streamids() As String = Nothing
                Dim mimetype As String = "application/pdf"
                Dim encoding As String = String.Empty
                Dim extensao As String = String.Empty
                Dim byteviewer() As Byte
                byteviewer = MeuObjetoReportViewer.LocalReport.Render("pdf", Nothing, mimetype, encoding, extensao, streamids, aviso)
                Response.Buffer = True
                Response.Clear()
                Response.ContentType = "application/pdf"
                Response.AddHeader("content-disposition", "inline; filename=ReportName.pdf")
                Response.BinaryWrite(byteviewer)
                Response.Flush()
                Response.End()
                MeuObjetoReportViewer.LocalReport.Refresh()
                MeuObjetoReportViewer.Visible = True
            Catch Ex As Exception
                ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "", "<script>alert('Falha!'" & " - " & Ex.Message & ");</script>", False)
            End Try

        End Sub

     

    sexta-feira, 21 de maio de 2010 09:57

Respostas

  • Oii , da uma olhada neste codigo que fiz , nele vc vai passar o seu report e o nome do arquivo que o cliente vai baixar .

     

     Public Sub ExportaPDF(ByRef Report As Microsoft.Reporting.WebForms.ReportViewer, ByVal Nome As String)
        Dim warnings As Microsoft.Reporting.WebForms.Warning() = Nothing
        Dim streamids As String() = Nothing
        Dim mimeType As String = Nothing
        Dim encoding As String = Nothing
        Dim extension As String = Nothing
        Dim bytes As Byte()
        bytes = Report.LocalReport.Render("PDF", _
         Nothing, mimeType, _
          encoding, extension, streamids, warnings)
        Dim fs As New IO.FileStream(Server.MapPath("") & "\" & Nome & ".pdf", IO.FileMode.Create)
        fs.Write(bytes, 0, bytes.Length)
        fs.Close()
    
        Baixar("\" & Nome & ".pdf")
    
    End Sub 
    
     Public Sub Baixar(ByVal Caminho As String)
        Try
          Dim pasta As New IO.DirectoryInfo(Server.MapPath(""))
          Dim arquivo As New IO.FileInfo(pasta.FullName + Caminho)
    
          Response.Clear()
          Response.AddHeader("Content-Disposition", "attachment; filename=" & arquivo.Name)
          Response.AddHeader("Content-Length", arquivo.Length.ToString())
    
          Response.WriteFile(arquivo.FullName)
    
        Catch ex As Exception
          Throw ex
        End Try
    
      End Sub
    

    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.

     

    quinta-feira, 1 de julho de 2010 03:56
  • Eu a uso assim que abasteço com os dados no report
    • Marcado como Resposta Luiz Corrêa domingo, 11 de julho de 2010 14:54
    domingo, 11 de julho de 2010 14:22

Todas as Respostas

  • Luiz,

    Alguma novidade quanto a essa sua dúvida?


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sábado, 12 de junho de 2010 01:07
    Moderador
  • Nenhuma, o pior é que o cliente se queixa do tempo que se leva para a aparição dos relatórios na tela, o que me deixa sem opção!!
    quinta-feira, 17 de junho de 2010 13:52
  • Oii , da uma olhada neste codigo que fiz , nele vc vai passar o seu report e o nome do arquivo que o cliente vai baixar .

     

     Public Sub ExportaPDF(ByRef Report As Microsoft.Reporting.WebForms.ReportViewer, ByVal Nome As String)
        Dim warnings As Microsoft.Reporting.WebForms.Warning() = Nothing
        Dim streamids As String() = Nothing
        Dim mimeType As String = Nothing
        Dim encoding As String = Nothing
        Dim extension As String = Nothing
        Dim bytes As Byte()
        bytes = Report.LocalReport.Render("PDF", _
         Nothing, mimeType, _
          encoding, extension, streamids, warnings)
        Dim fs As New IO.FileStream(Server.MapPath("") & "\" & Nome & ".pdf", IO.FileMode.Create)
        fs.Write(bytes, 0, bytes.Length)
        fs.Close()
    
        Baixar("\" & Nome & ".pdf")
    
    End Sub 
    
     Public Sub Baixar(ByVal Caminho As String)
        Try
          Dim pasta As New IO.DirectoryInfo(Server.MapPath(""))
          Dim arquivo As New IO.FileInfo(pasta.FullName + Caminho)
    
          Response.Clear()
          Response.AddHeader("Content-Disposition", "attachment; filename=" & arquivo.Name)
          Response.AddHeader("Content-Length", arquivo.Length.ToString())
    
          Response.WriteFile(arquivo.FullName)
    
        Catch ex As Exception
          Throw ex
        End Try
    
      End Sub
    

    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.

     

    quinta-feira, 1 de julho de 2010 03:56
  • Obrigado Fernando, vou testar.
    sábado, 10 de julho de 2010 21:10
  • Fernando, em que momento essa rotina faria com que o carregamento do relatório seria mais rápido?

    sábado, 10 de julho de 2010 21:52
  • Eu a uso assim que abasteço com os dados no report
    • Marcado como Resposta Luiz Corrêa domingo, 11 de julho de 2010 14:54
    domingo, 11 de julho de 2010 14:22
  • ok, vou tentar e ver e há um carregamento mais rápido.
    domingo, 11 de julho de 2010 14:55