CAMINHO PARA CARREGAR O CRYSTAL REPORTS
Boa tarde amigos, sou estudante de VB.NET e estou desenvolvendo um projeto para o término do meu curso. Utilizo o Visual Studio 2010 Ultimate, e o SQL SERVER 2012. Estou com problemas no caminho para carregar o relatório Crystal Reports. Se eu travar o caminho do RPT, funciona normalmente. Porém como irei precisar fazer o executável do sistema, preciso definir um path com o caminho.
Não estou conseguindo criar o path com o caminho. Fiz vários testes mas não carrega o relatório.
Segue meu código abaixo, com algumas tentativas que não deram certo:
Imports System.Data.SqlClient [ô]Biblioteca com os Objetos de Acesso ao BD
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Data.OleDb
Imports System.Reflection
Imports System.IO
Public Class frmRptFuncionarios
Private Sub frmRptFuncionarios_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
[ô] declarar os objetos para acesso ao banco de dados
Dim SqlConn As SqlClient.SqlConnection
Dim SqlDataAdp As SqlClient.SqlDataAdapter
Dim DSet As DataSet
[ô] declarar o objeto de relatorio
Dim rptfuncionarios As ReportDocument
[ô] instaciar (criar) o objeto
rptfuncionarios = New ReportDocument
[ô] carregar o arquivo do relatorio no objeto - linha original do código(funciona)
[ô]rptfuncionarios.Load([Ô]C:\Users\Guilherme\Desktop\Projeto_InstitutoBeleza\Relatoriosptfuncionarios.rpt[Ô])
[ô] tentativas que não deram certo:
[ô]rptfuncionarios.Load(Application.StartupPath + [Ô]\ptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.Windows.Forms.Application.StartupPath + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.AppDomain.CurrentDomain.BaseDirectory + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(Assembly.GetEntryAssembly().Location + [Ô]\Relatoriosptfuncionarios.rpt[Ô]) [ô]
[ô]rptfuncionarios.Load(Assembly.GetExecutingAssembly().Location + [Ô]\Relatoriosptfuncionarios.rpt[Ô]) [ô]
[ô]rptfuncionarios.Load(Path.GetDirectoryName(Diagnostics.Process.GetCurrentProcess().MainModule.FileName) + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName) + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.IO.Directory.GetCurrentDirectory() + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
rptfuncionarios.Load(System.AppDomain.CurrentDomain.BaseDirectory + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô] instanciar o objeto de conexao, com a string publica criada no formulário principal
SqlConn = New SqlClient.SqlConnection(mdiInstitutoBeleza.GetConnStr())
Try
[ô] Abrir a conexao com o banco de dados
SqlConn.Open()
[ô] instanciar o objeto DataAdapter com base em um SQL e na conexao
SqlDataAdp = New SqlClient.SqlDataAdapter([Ô]SELECT idfuncionario, nome, funcao, endereco, nr, bairro, complemento, cidade, uf, cep, dddRes, foneRes, dddCel, foneCel, email, sexo, dNascto, rg, cpf, obs [Ô] +
[Ô] FROM funcionario [Ô] +
[Ô] ORDER BY idfuncionario[Ô],
SqlConn)
[ô] instanciar o objeto DataSet
DSet = New DataSet
[ô] preencher o dataset com o resultado do SQL
[ô] O nome SQLResult eh uma escolha, poderia ser qualquer um
SqlDataAdp.Fill(DSet, [Ô]SQLResult[Ô])
Catch ex As Exception
MessageBox.Show([Ô]Erro ao conectar no Banco de Dados![Ô] & vbCrLf & vbCrLf &
[Ô]Mensagem Original:[Ô] & Environment.NewLine &
ex.Message,
[Ô]Erro[Ô], MessageBoxButtons.OK,
MessageBoxIcon.Error)
Exit Sub
End Try
[ô] setar a fonte de dados do relatorio,
[ô] LEMBRAR de usar o mesmo nome que o fill logo acima
rptfuncionarios.SetDataSource(DSet.Tables([Ô]SQLResult[Ô]))
[ô] associar o relatorio ao visualizador
crvfuncionarios.ReportSource = rptfuncionarios
[ô] atualizar a exibicao
crvfuncionarios.Refresh()
[ô] fechar a conexao com o BD
SqlConn.Close()
End Sub
End Class
Fico no aguardo de qualquer resposta e agradeço desde já.
Obrigado !
Não estou conseguindo criar o path com o caminho. Fiz vários testes mas não carrega o relatório.
Segue meu código abaixo, com algumas tentativas que não deram certo:
Imports System.Data.SqlClient [ô]Biblioteca com os Objetos de Acesso ao BD
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Data.OleDb
Imports System.Reflection
Imports System.IO
Public Class frmRptFuncionarios
Private Sub frmRptFuncionarios_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
[ô] declarar os objetos para acesso ao banco de dados
Dim SqlConn As SqlClient.SqlConnection
Dim SqlDataAdp As SqlClient.SqlDataAdapter
Dim DSet As DataSet
[ô] declarar o objeto de relatorio
Dim rptfuncionarios As ReportDocument
[ô] instaciar (criar) o objeto
rptfuncionarios = New ReportDocument
[ô] carregar o arquivo do relatorio no objeto - linha original do código(funciona)
[ô]rptfuncionarios.Load([Ô]C:\Users\Guilherme\Desktop\Projeto_InstitutoBeleza\Relatoriosptfuncionarios.rpt[Ô])
[ô] tentativas que não deram certo:
[ô]rptfuncionarios.Load(Application.StartupPath + [Ô]\ptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.Windows.Forms.Application.StartupPath + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.AppDomain.CurrentDomain.BaseDirectory + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(Assembly.GetEntryAssembly().Location + [Ô]\Relatoriosptfuncionarios.rpt[Ô]) [ô]
[ô]rptfuncionarios.Load(Assembly.GetExecutingAssembly().Location + [Ô]\Relatoriosptfuncionarios.rpt[Ô]) [ô]
[ô]rptfuncionarios.Load(Path.GetDirectoryName(Diagnostics.Process.GetCurrentProcess().MainModule.FileName) + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName) + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô]rptfuncionarios.Load(System.IO.Directory.GetCurrentDirectory() + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
rptfuncionarios.Load(System.AppDomain.CurrentDomain.BaseDirectory + [Ô]\Relatoriosptfuncionarios.rpt[Ô])
[ô] instanciar o objeto de conexao, com a string publica criada no formulário principal
SqlConn = New SqlClient.SqlConnection(mdiInstitutoBeleza.GetConnStr())
Try
[ô] Abrir a conexao com o banco de dados
SqlConn.Open()
[ô] instanciar o objeto DataAdapter com base em um SQL e na conexao
SqlDataAdp = New SqlClient.SqlDataAdapter([Ô]SELECT idfuncionario, nome, funcao, endereco, nr, bairro, complemento, cidade, uf, cep, dddRes, foneRes, dddCel, foneCel, email, sexo, dNascto, rg, cpf, obs [Ô] +
[Ô] FROM funcionario [Ô] +
[Ô] ORDER BY idfuncionario[Ô],
SqlConn)
[ô] instanciar o objeto DataSet
DSet = New DataSet
[ô] preencher o dataset com o resultado do SQL
[ô] O nome SQLResult eh uma escolha, poderia ser qualquer um
SqlDataAdp.Fill(DSet, [Ô]SQLResult[Ô])
Catch ex As Exception
MessageBox.Show([Ô]Erro ao conectar no Banco de Dados![Ô] & vbCrLf & vbCrLf &
[Ô]Mensagem Original:[Ô] & Environment.NewLine &
ex.Message,
[Ô]Erro[Ô], MessageBoxButtons.OK,
MessageBoxIcon.Error)
Exit Sub
End Try
[ô] setar a fonte de dados do relatorio,
[ô] LEMBRAR de usar o mesmo nome que o fill logo acima
rptfuncionarios.SetDataSource(DSet.Tables([Ô]SQLResult[Ô]))
[ô] associar o relatorio ao visualizador
crvfuncionarios.ReportSource = rptfuncionarios
[ô] atualizar a exibicao
crvfuncionarios.Refresh()
[ô] fechar a conexao com o BD
SqlConn.Close()
End Sub
End Class
Fico no aguardo de qualquer resposta e agradeço desde já.
Obrigado !
eu uso assim e funciona...
Dim Caminho As String = [Ô][Ô]
Dim Relatorio As New GeraRelatorio
Dim cr As New RelatorioAberturaEncerramento
Caminho = System.Windows.Forms.Application.StartupPath & [Ô]\RelatorioAberturaEncerramento.rpt[Ô]
cr.Load(Caminho)
cr.SetDataSource(Relatorio.GeraConsuta(Campos, Condicao, Tipo).Tables(0))
Me.Report.ReportSource = cr
Dim Caminho As String = [Ô][Ô]
Dim Relatorio As New GeraRelatorio
Dim cr As New RelatorioAberturaEncerramento
Caminho = System.Windows.Forms.Application.StartupPath & [Ô]\RelatorioAberturaEncerramento.rpt[Ô]
cr.Load(Caminho)
cr.SetDataSource(Relatorio.GeraConsuta(Campos, Condicao, Tipo).Tables(0))
Me.Report.ReportSource = cr
Faça seu login para responder