none
:: Carregar arquivo Crystal Report ::

    Question

  • Pessoal,

     

    Preciso de uma ajuda no seguinte assunto:

     

    Tenho uma aplicação Windows Forms e necessito carregar um arquivo RPT do crystal reports que se encontra dentro de uma pasta Crystal Reports que eu criei, agora como faço para referenciar essa pasta.

     

    Quando era VB6 faziamos atraves do AppPath & "\Pasta"

     

    E agora como faço para carregar:

     

    cr_Report_Document.Load(?????(AppPath) & "\Crystal Reports\rpt_Ordens_Producao.rpt")

     

    Aguardo retorno.

    Thursday, May 15, 2008 12:27 PM

Answers

  • Opa!

     

    Acho que o problema está aqui:

    Code Snippet

     

    '=== Definir datasource do relatorio ===================================================

    cr_Report_Document.SetDataSource(ds_Orden_Producao_Report)

     

    altere para

     

    '=== Definir datasource do relatorio ===================================================

    cr_Report_Document.Database.Tables(0).SetDataSource(ds_Orden_Producao_Report.Tables(0))

     

     

     

    uma vez que será retornado apenas 1 ResultSet, pode fazer assim:

     

    Code Snippet

    Dim oTable As New DataTable()

     

    Dim oDA As New SqlDataAdapter(strSQL.ToString, oConn)

    oDA.Fill(oTable)

     

    'definindo o DataSource do relatório

    crReportDocument.SetDataSource(oTable)

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    Thursday, May 15, 2008 2:10 PM

All replies

  • Adalton,

     

    Minha sugestão:

     

    Code Snippet

    Dim strReportPath As String = ""

     

    strReportPath = String.Concat(Replace(My.Application.Info.DirectoryPath(), "\bin\Debug", ""), "\Crystal Reports\rpt_Ordens_Producao.rpt")

     

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
    Thursday, May 15, 2008 1:07 PM
  • Laercio,

     

    Mais uma vez obrigado.

     

    Uma outra duvida:

     

    Baixei o seu webcast para criacao de relatorios, e criei uma Sub que carrega o relatorio. Está acontecendo algo esquisito, pois quando executo o comando SQL no SQL Server ele traz dados, quando executo a Sub não está trazendo nada. Vc pode dar uma ajuda, segue o código da Sub:

     

    Public Sub Emite_Relatorio_Producao()

    Dim cr_Report_Document As New ReportDocument

    Dim cn_SQL_Server As New SqlConnection

    Dim lc_SQL As New StringBuilder

    Dim ds_Orden_Producao_Report As New ds_Ordens_Producao

    Try

    '=== Carregar dados no Relatorio ====================================================

    cn_SQL_Server.ConnectionString = My.Settings.db_SAC_TESTE

    cn_SQL_Server.Open()

    '=== Definindo o SQL =============================================================

    lc_SQL.Append("SELECT Maquina, Sequencia, CodigoNPN, Qtde, Tipo_Ordem, Lista ")

    lc_SQL.Append("FROM tb_ORDENS_PRODUCAO WHERE Maquina = 'PRENSA_GM'")

    Dim da_Ordens_Producao As New SqlDataAdapter(lc_SQL.ToString, cn_SQL_Server)

    da_Ordens_Producao.Fill(ds_Orden_Producao_Report)

    '=== Carregar o relatorio Crystal Report ================================================

    cr_Report_Document.Load(String.Concat(Replace(My.Application.Info.DirectoryPath(), "\bin\Debug", ""), "\Crystal Reports\rpt_Ordens_Producao.rpt"))

    '=== Definir datasource do relatorio ===================================================

    cr_Report_Document.SetDataSource(ds_Orden_Producao_Report)

    '=== Visualizar o relatorio ===========================================================

    cr_Print_Preview.ReportSource = cr_Report_Document

    Catch ex As Exception

    MessageBox.Show(ex.Message)

    Finally

    cn_SQL_Server.Dispose()

    ds_Orden_Producao_Report.Dispose()

    cn_SQL_Server = Nothing

    ds_Orden_Producao_Report = Nothing

    End Try

    End Sub

    Thursday, May 15, 2008 1:34 PM
  • Opa!

     

    Acho que o problema está aqui:

    Code Snippet

     

    '=== Definir datasource do relatorio ===================================================

    cr_Report_Document.SetDataSource(ds_Orden_Producao_Report)

     

    altere para

     

    '=== Definir datasource do relatorio ===================================================

    cr_Report_Document.Database.Tables(0).SetDataSource(ds_Orden_Producao_Report.Tables(0))

     

     

     

    uma vez que será retornado apenas 1 ResultSet, pode fazer assim:

     

    Code Snippet

    Dim oTable As New DataTable()

     

    Dim oDA As New SqlDataAdapter(strSQL.ToString, oConn)

    oDA.Fill(oTable)

     

    'definindo o DataSource do relatório

    crReportDocument.SetDataSource(oTable)

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    Thursday, May 15, 2008 2:10 PM
  • Laercio,

     

    Valeu mais uma vez pela ajuda.

     

    RESUMO DA ÓPERA: a primeira solução de especificar a tabela (Tables(0)) não funcionou. Já a segunda, de definir uma datatable deu certo.

     

    Porém, isso faz com que eu não precise do DataSet pré definido. Pode ser tudo via código mesmo. Certo?

     

    Muito obrigado pela ajuda.

     

    Abraços.

     

    Thursday, May 15, 2008 2:25 PM
  • Adalton,

     

    Eu utilizo o DataSet (que é um arquivos XML) apenas para fazer o designer do relatório e nada mais (para "ReportView Local"). Também estou vendo a possibilidade de utilizar o Reporting Services ("ReportView Server").

     

    Faça um teste assim:

     

    Code Snippet

    Dim ds_Orden_Producao_Report As New ds_Ordens_Producao

    da_Ordens_Producao.Fill(ds_Orden_Producao_Report, "nome_do_data_table_definido_no_data_set")

     

     

    Valeu!

    Thursday, May 15, 2008 2:47 PM
  • Laercio,

     

    Segui sua indicação e correu tudo certo. Mas uma vez muito obrigado pela ajuda.

     

    Então o padrão de trabalho para relatorios que vc sempre usa é esse, criar o Dataset para a estrutura dos dados, a parte de preenchimento e exibição toda via código....

     

    Cara... tenho umas idéia pra trabalhar de forma dinâmica, gostaria de saber se vc poderia me passar o seu MSN para que pudessemos conversar para que vc com toda sua experiência e conhecimento me ajudasse a analisar a viabilidade dessa idéia... isso é possível???

     

    Abraço...

     

    Thursday, May 15, 2008 6:30 PM
  • Ah!!!

     

    Esqueci... se for possivel e quiser me passar por email... meu email é adalton_veloso@yahoo.com.br

    Thursday, May 15, 2008 6:32 PM