Essa rotina abaixo exibe um relatório do Crystal 9, para essa rotina foi criado um relatório em ADO e em Access.
Public Aplicacao As New CRAXDRT.Application
Public Report As New CRAXDRT.Report
Public Sub Imprimir_Nome(Relatorio As String, Codigo As String, Tabela As String)
Dim StringSQL As String
'Se for um subReport ao invés de OPenReport vc Coloca OpenSubReport(nome do subreport)
Set Report = Aplicacao.OpenReport(Relatorio) 'Caminho do Relatório
StringSQL = "{" & Tabela & "} = " & Codigo & ""
Report.RecordSelectionFormula = StringSQL
With Formulario
'informa a senha do banco de dados referente ao relatório pedido
Report.Database.LogOnServer "DAO", "", "Banco de Dados", "", "senha"
'atualiza o banco de dados
Report.DiscardSavedData
'puxa o relatório
.CRV.ReportSource = Report
.CRV.ViewReport
End With
Já para passar parametros em um relatório criado em ADO:
Public Sub Imprimir_Relat_Formula(Formulario As Form, Relatorio As String, Formula As String)
Dim StringSQL As String
Dim Caminho As String
Dim Senha As String
Senha = "Senha"
'Caminho = "Caminho onde o relatorio e o banco se encontra"
'Se for um subReport ao invés de OPenReport vc Coloca OpenSubReport(nome do subreport)
Set Report = Aplicacao.OpenReport(Caminho & Relatorio, 1) 'Caminho do Relatório
StringSQL = Formula
Report.RecordSelectionFormula = StringSQL
With Formulario
'conexão com o banco de dados via ADO
Report.Database.Tables.Item(1).ConnectBufferString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Caminho & "Banco de Dados;Jet OLEDB:database Password=senha"
Report.Database.Tables.Item(1).DllName = "crdb_ado.dll"
'atualiza o banco de dados
Report.DiscardSavedData
'puxa o relatório
.CRV.ReportSource = Report
.CRV.ViewReport
End With
'Fechar Banco de dados
Set Aplicacao = Nothing
Set Report = Nothing
End Sub
Agora é só ir para a alegria.
Flw
T+