CRYSTAL X SQL X ACCESS
Gostaria de saber se posso trocar a conexão de banco de dados para o crystal em tempo real. Ex
if sql then
conexão sql
else
conexão Access
endif
No mesmo relatorio
if sql then
conexão sql
else
conexão Access
endif
No mesmo relatorio
O que sei que dá para fazer é passar para o relatório os recordsets que estão em memória, dessa maneira o Crystal não faz o acesso ao banco utilizando os dados que vc passa via código. Assim vc tem o que precisa...
Mas para isso vc tem que criar o relatório com fonte de dados do tipo ADO.
Por exemplo:
Quando for criar o relatório na escolha da fonte de dados selecione
no Data Explorer : More Data Sources -> Active Data -> Active Data(ADO) . No select Data Source escolha ADO end OLE DB e faça a conexão. Monte o relatório e no vb faça a chamado do relatório da seguinte maneira:
Fazer as seguintes referências no projeto
Crystal Report X Active Designer Run Time Library
Crystal Report X Active Designer Design Time Library
Crystal Report View Control
Dim CrystalAPP As New CRAXDRT.Application
Dim rptRelatorio As New CRAXDRT.Report
Set rptRelatorio = CrystalAPP.OpenReport("C:\Temp|Relatorio.rpt")
' Passe aqui os recordeset's que vc deve ter aberto para o relatório
' Lembre de passar na ordem em que as tabelas foram adcionadas ao relatório
' Especificando essa ordem no último parà ¢metro da linha abaixo
rptRelatorio.Database.SetDataSource SeuRecordset, , 1 ' 1Âê Tabela
rptRelatorio.Database.SetDataSource SeuRecordset, , 2 ' 2Âê Tabela
' Caso o relatório tenha subreport
rptRelatorio.subreport2.OpenSubreport.Database.SetDataSource SeuRecordset, , 1
' Esse é um View do Crystal para exibir o relatório
' Mas vc pode mandar imprimir diretamente
CRVTeste.ReportSource = rptRelatorio
CRVTeste.Zoom 100
CRVTeste.ViewReport
' Impressão direta
rptRelatorio.PrintOut False, 1
Espero que ajude.
Mas para isso vc tem que criar o relatório com fonte de dados do tipo ADO.
Por exemplo:
Quando for criar o relatório na escolha da fonte de dados selecione
no Data Explorer : More Data Sources -> Active Data -> Active Data(ADO) . No select Data Source escolha ADO end OLE DB e faça a conexão. Monte o relatório e no vb faça a chamado do relatório da seguinte maneira:
Fazer as seguintes referências no projeto
Crystal Report X Active Designer Run Time Library
Crystal Report X Active Designer Design Time Library
Crystal Report View Control
Dim CrystalAPP As New CRAXDRT.Application
Dim rptRelatorio As New CRAXDRT.Report
Set rptRelatorio = CrystalAPP.OpenReport("C:\Temp|Relatorio.rpt")
' Passe aqui os recordeset's que vc deve ter aberto para o relatório
' Lembre de passar na ordem em que as tabelas foram adcionadas ao relatório
' Especificando essa ordem no último parà ¢metro da linha abaixo
rptRelatorio.Database.SetDataSource SeuRecordset, , 1 ' 1Âê Tabela
rptRelatorio.Database.SetDataSource SeuRecordset, , 2 ' 2Âê Tabela
' Caso o relatório tenha subreport
rptRelatorio.subreport2.OpenSubreport.Database.SetDataSource SeuRecordset, , 1
' Esse é um View do Crystal para exibir o relatório
' Mas vc pode mandar imprimir diretamente
CRVTeste.ReportSource = rptRelatorio
CRVTeste.Zoom 100
CRVTeste.ViewReport
' Impressão direta
rptRelatorio.PrintOut False, 1
Espero que ajude.
Tópico encerrado , respostas não são mais permitidas