locked
Tem como usar Crystal Reports com Silverlight RRS feed

  • Pergunta

  • Bom Dia, Pessoal.

     

    Tem como fazer a integração de relatórios feitos em Crystal Reports para mostrar em um ChildWindow.

     

    Atenciosamente,

    Obrigado.

    sexta-feira, 25 de fevereiro de 2011 18:05

Respostas

  • Boa Tarde, 

    Consegui utilizar o Crystal Reports dentro do silverlight, como usava o WCF criei um Método para o relatório que me retorna um STREAM como segue abaixo:

     

     

    public Stream MostraVeiculos()
    {
      PKEntities _db = new PKEntities();
      
      var _Veiculos = (from v in _db.VEICULO select v).ToList();
    
      CryRpt = new ReportDocument();
      
      CryRpt.Load(AppDomain.CurrentDomain.BaseDirectory + @"CryReports\CryVeiculos.rpt");
    
     CryRpt.SetDataSource(_Veiculos);
    
     CrystalDecisions.Shared.ExportOptions CrExportOptions;
     PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
     
     CrExportOptions = CryRpt.ExportOptions;
     {
         CrExportOptions.ExportDestinationType = ExportDestinationType.NoDestination;
         CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
         CrExportOptions.FormatOptions = CrFormatTypeOptions;
     }
     return CryRpt.ExportToStream(ExportFormatType.PortableDocFormat); 
    }
    
    

     


    Em seguida quando era executado na minha aplicação silverlight eu convertia novamente para um pdf e mandava para um componente de exibição de pdf do próprio silverlight:

     

        private void OKButton_Click(object sender, RoutedEventArgs e) 
        {
                
          busyIndicator1.IsBusy = true;
    
          PkWEBClient WebService = new PkWEBClient();
          WebService.OpenAsync();
          WebService.MostraVeiculosAsync();
          WebService.MostraVeiculosCompleted += new EventHandler<MostraVeiculosCompletedEventArgs>(MostraVeiculosCompleted);
          WebService.CloseAsync();
        }
    
        private void MostraVeiculosCompleted(object sender, MostraVeiculosCompletedEventArgs e)
        {
          if (e.Result != null)
          {
    		Stream s = new MemoryStream(e.Result);
            frmMostraRelatorio frmRelatorio = new frmMostraRelatorio();
            frmRelatorio.c1PdfViewer1.LoadDocument(s); 
            frmRelatorio.Show();
            busyIndicator1.IsBusy = false;
          }
        }
    


    Muito Obrigado.

    Pessoal pela Colaboração.

    segunda-feira, 25 de julho de 2011 18:45

Todas as Respostas

  • See

    http://forums.silverlight.net/forums/p/23634/513830.aspx


    Não esqueça de usar o componente </> na barra para posta seu código.
    segunda-feira, 28 de fevereiro de 2011 20:25
  • Olá Manoel!

    Analise este link, ele pode lhe ser útil.

    http://www.global-webnet.net/blogengine/post/2009/01/06/Running-Crystal-Reports-from-Silverlight.aspx

    att;


    Eder Costa - LATAM Forum Support Engineer
    Microsoft Corporation
    sexta-feira, 4 de março de 2011 15:17
  • Boa Tarde, 

    Consegui utilizar o Crystal Reports dentro do silverlight, como usava o WCF criei um Método para o relatório que me retorna um STREAM como segue abaixo:

     

     

    public Stream MostraVeiculos()
    {
      PKEntities _db = new PKEntities();
      
      var _Veiculos = (from v in _db.VEICULO select v).ToList();
    
      CryRpt = new ReportDocument();
      
      CryRpt.Load(AppDomain.CurrentDomain.BaseDirectory + @"CryReports\CryVeiculos.rpt");
    
     CryRpt.SetDataSource(_Veiculos);
    
     CrystalDecisions.Shared.ExportOptions CrExportOptions;
     PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
     
     CrExportOptions = CryRpt.ExportOptions;
     {
         CrExportOptions.ExportDestinationType = ExportDestinationType.NoDestination;
         CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
         CrExportOptions.FormatOptions = CrFormatTypeOptions;
     }
     return CryRpt.ExportToStream(ExportFormatType.PortableDocFormat); 
    }
    
    

     


    Em seguida quando era executado na minha aplicação silverlight eu convertia novamente para um pdf e mandava para um componente de exibição de pdf do próprio silverlight:

     

        private void OKButton_Click(object sender, RoutedEventArgs e) 
        {
                
          busyIndicator1.IsBusy = true;
    
          PkWEBClient WebService = new PkWEBClient();
          WebService.OpenAsync();
          WebService.MostraVeiculosAsync();
          WebService.MostraVeiculosCompleted += new EventHandler<MostraVeiculosCompletedEventArgs>(MostraVeiculosCompleted);
          WebService.CloseAsync();
        }
    
        private void MostraVeiculosCompleted(object sender, MostraVeiculosCompletedEventArgs e)
        {
          if (e.Result != null)
          {
    		Stream s = new MemoryStream(e.Result);
            frmMostraRelatorio frmRelatorio = new frmMostraRelatorio();
            frmRelatorio.c1PdfViewer1.LoadDocument(s); 
            frmRelatorio.Show();
            busyIndicator1.IsBusy = false;
          }
        }
    


    Muito Obrigado.

    Pessoal pela Colaboração.

    segunda-feira, 25 de julho de 2011 18:45