none
Gráfico Barra/Linha - Crystal Report RRS feed

  • Pergunta

  • Amigo, não consigo achar esses tais videos, com os exemplos avançados de montar gráficos, estou precisando montar um grafico com Barra/Linha, os dados eu sei como enviar para o gráfico, mais não consigo achar o modelo adequado ou uma forma de manipular, no crystal do VS2010.

    Poderia me ajudar?

     

    Abraços.


    Samir Costa
    • Editado Samir Costa quinta-feira, 21 de julho de 2011 19:59
    quarta-feira, 20 de julho de 2011 18:35

Respostas

  • Consegui.
    
    Seguinte, existe um modelo de gráfico (Chart) do .Net, na aba DATA da ToolBox, modelo padrão mesmo de barras, onde vc vai incluindo as Series manualmente e cada serie se pode manipular trocando o jeito que é para aparecer. Vou tentar resumir com pedaços do codigo.
    
    
    Bom esta configuração teremos este gráfico: http://img402.imageshack.us/img402/3307/semttulody.png
    
     
    
    Depois de configurar da maneira que desejar é so preencher o dataset.
    
     
    
    Preenchido o DataSet jogamos no Chart, da seguinte forma:
    
     
    
    Dim Caminho = Server.MapPath("grafico.png")
    Me.Chart1.DataSource = Ds.Tables("TabTourosRA_1") 'dataset
    Me.Chart1.DataBind()
    
    'salva o grafico 
    Me.Chart1.SaveImage(Caminho, DataVisualization.Charting.ChartImageFormat.Png)
    'em outro dataset com uma coluna do tipo byte()
    
    Dim Grava As ds.TabGraficoRA1Row = Ds.TabGraficoRA1.NewTabGraficoRA1Row
    Grava.RA = CarregaGrafico(Caminho)
    Ds.TabGraficoRA1.Rows.Add(Grava)
    
     
    
    Private Function CarregaGrafico(ByVal FileName As String) As Byte()
     'Método para carregar uma imagem do disco e retorná-la como um byteStream
     Dim fs As FileStream = New FileStream(FileName, FileMode.Open, FileAccess.Read)
     Dim br As BinaryReader = New BinaryReader(fs)
     Return (br.ReadBytes(Convert.ToInt32(br.BaseStream.Length)))
    End Function 
    
    
    
    Este Ds.Tables("TabGraficoRA1") eu jogo em Sessão pois eu redireciono meus relatorios para um arquivo especifico para ja passar para o usuario em pdf.
    
     
    
    Session("RDP_Grafico_Tab_20") = Ds.Tables("TabGraficoRA1")
    
     
    
    Bom ai no Crystal Report é bem mais facil, vc monta seu relatório da forma que quizer, cria um sub-relatorio ao qual será vinculado esta DS. Ai é so arrastar o campo para onde vc quizer no relatorio.
    
     
    
    desta forma:
    
    Dim relatorio As New CrystalDecisions.CrystalReports.Engine.ReportClass()
    Dim Ds As New mediagrafpond
    Dim Dt20 As New mediagrafpond.TabGraficoRA1DataTable
    Dim NomePDF As String = "relatoriodegrafico.pdf"
    Dt20 = Session("RDP_Grafico_Tab_20")
    Dt20.CopyToDataTable(Ds.TabGraficoRA1, LoadOption.OverwriteChanges)
    relatorio.FileName = Server.MapPath("nomerelatorio.rpt")
    relatorio.SetDataSource(Ds)
    relatorio.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, NomePDF)
    
     
    
    E o resultado é perfeito : http://img202.imageshack.us/img202/6501/semttulodkl.png
    
     
    
    Valew pela ajuda!!


    Living easy ... Living free ...
    • Marcado como Resposta Samir Costa quinta-feira, 21 de julho de 2011 19:56
    quinta-feira, 21 de julho de 2011 19:55

Todas as Respostas

  • O link Usando Gráficos Crystal no VS2010 contém alguns exemplos para download em C#. Veja se lhe auxilia e em caso positivo, marque como resposta :)

    "Mas a persistência é o que leva a perfeição."
    quarta-feira, 20 de julho de 2011 18:53
  • Sim, claro, talvez não fui muito especifico.

    Sei como montar o gráfico, eu queria na verdade era ver o video para ver se tem a possibiliadde de montar um gráfico com este aqui : http://img543.imageshack.us/img543/567/ra19.png

    E um sistema em delphi que estou passando para VS e no CR que vem com o VS não consigo achar nada semelhante a isto.


    Samir Costa
    quarta-feira, 20 de julho de 2011 19:13
  • Samir, quando você passa uma base de dado para o CR, se ele tiver o gráfico configurado corretamente, é possível gerar um relatório semelhante (estou em dúvida com relação às médias, mas as barras, dá pra fazer sim).

    Para configurar, dê uma olhada nesse canal, que contém vários tutoriais do Chart Expert.


    "Mas a persistência é o que leva a perfeição."
    quarta-feira, 20 de julho de 2011 19:22
  • Eu consigo fazer as comparações certinhas, como vc esta falando, mais no grafico de barras apenas, fica legal, por mim servia, mais ja viu né sou funcionario, obedece quem tem juizo hehe, ai to com essa dor de cabeça, eu vou dar uma olhada em casa, aqui é bloquiado streaming. mais valeu mesmo, obrigado.
    Living easy ... Living free ...
    quarta-feira, 20 de julho de 2011 19:28
  • Fera, achei o modelo no Chart do .Net

    http://img38.imageshack.us/img38/4830/chartimg.png

    vou ver se consigo jogar ele no crystal depois de preenchido corretamente.

    Valew a força.


    Living easy ... Living free ...
    quarta-feira, 20 de julho de 2011 20:05
  • Se der certo, poste como fez. Outros desenvolvedores podem ter a mesma dúvida e seria legal documentar :)
    "Mas a persistência é o que leva a perfeição."
    quarta-feira, 20 de julho de 2011 20:12
  • Fera,

    Gerar o gráfico eu consegui: http://img849.imageshack.us/img849/9080/chartimgcaa0cziw.png

    agora vou tentar exportar para o crystal de alguma forma.

    quando eu terminar, tento explicar aqui.

    Abraços.


    Living easy ... Living free ...
    quinta-feira, 21 de julho de 2011 13:45
  • Consegui.
    
    Seguinte, existe um modelo de gráfico (Chart) do .Net, na aba DATA da ToolBox, modelo padrão mesmo de barras, onde vc vai incluindo as Series manualmente e cada serie se pode manipular trocando o jeito que é para aparecer. Vou tentar resumir com pedaços do codigo.
    
    
    Bom esta configuração teremos este gráfico: http://img402.imageshack.us/img402/3307/semttulody.png
    
     
    
    Depois de configurar da maneira que desejar é so preencher o dataset.
    
     
    
    Preenchido o DataSet jogamos no Chart, da seguinte forma:
    
     
    
    Dim Caminho = Server.MapPath("grafico.png")
    Me.Chart1.DataSource = Ds.Tables("TabTourosRA_1") 'dataset
    Me.Chart1.DataBind()
    
    'salva o grafico 
    Me.Chart1.SaveImage(Caminho, DataVisualization.Charting.ChartImageFormat.Png)
    'em outro dataset com uma coluna do tipo byte()
    
    Dim Grava As ds.TabGraficoRA1Row = Ds.TabGraficoRA1.NewTabGraficoRA1Row
    Grava.RA = CarregaGrafico(Caminho)
    Ds.TabGraficoRA1.Rows.Add(Grava)
    
     
    
    Private Function CarregaGrafico(ByVal FileName As String) As Byte()
     'Método para carregar uma imagem do disco e retorná-la como um byteStream
     Dim fs As FileStream = New FileStream(FileName, FileMode.Open, FileAccess.Read)
     Dim br As BinaryReader = New BinaryReader(fs)
     Return (br.ReadBytes(Convert.ToInt32(br.BaseStream.Length)))
    End Function 
    
    
    
    Este Ds.Tables("TabGraficoRA1") eu jogo em Sessão pois eu redireciono meus relatorios para um arquivo especifico para ja passar para o usuario em pdf.
    
     
    
    Session("RDP_Grafico_Tab_20") = Ds.Tables("TabGraficoRA1")
    
     
    
    Bom ai no Crystal Report é bem mais facil, vc monta seu relatório da forma que quizer, cria um sub-relatorio ao qual será vinculado esta DS. Ai é so arrastar o campo para onde vc quizer no relatorio.
    
     
    
    desta forma:
    
    Dim relatorio As New CrystalDecisions.CrystalReports.Engine.ReportClass()
    Dim Ds As New mediagrafpond
    Dim Dt20 As New mediagrafpond.TabGraficoRA1DataTable
    Dim NomePDF As String = "relatoriodegrafico.pdf"
    Dt20 = Session("RDP_Grafico_Tab_20")
    Dt20.CopyToDataTable(Ds.TabGraficoRA1, LoadOption.OverwriteChanges)
    relatorio.FileName = Server.MapPath("nomerelatorio.rpt")
    relatorio.SetDataSource(Ds)
    relatorio.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, NomePDF)
    
     
    
    E o resultado é perfeito : http://img202.imageshack.us/img202/6501/semttulodkl.png
    
     
    
    Valew pela ajuda!!


    Living easy ... Living free ...
    • Marcado como Resposta Samir Costa quinta-feira, 21 de julho de 2011 19:56
    quinta-feira, 21 de julho de 2011 19:55