TABELA CRYSTAL REPORT 8.5
Olá pessoal.
Estou com uma dúvida com relação ao Crystal Repor 8.5 que vou tentar passar para ver se alguém pode me ajudar.
Criei um relatório no Crystal com algumas tabelas do BD mysql 5.1, ao concluir o relatório o Crystal ja deixa gravado internamente no menu Database no submenu Set Location, o nome do banco e as tabelas que eu usei, pois bem, ai é que esta a minha dúvia, quando passo através do VB6 a linha de codigo para chamar este relatório, a linha de codigo é esta:
With CrystalReport1
[txt-color=#e80000].Connect = [Ô]DSN = xxxxt ;DATABASE=xxx ;UID = xxx; PWD=xxx[Ô][/txt-color]
.ReportFileName = App.Path & [Ô]\RELATORIOS\xxxx.rpt[Ô]
.SelectionFormula = formula
.WindowState = crptMaximized [ô]maximiza a tela do relatório
.Destination = crptToWindow
.Action = 1
End With
Ainda que eu mude toda a linha do connect, para o VB6 direcionar a impressão para outro BD, na hora de imprimir o relatório o Crystal vai sempre imprimir os dados do BD que esta gravado internamente no Set Location, e não os dados do BD que estou passondo via codigo no Connect.
Alguém poderia me ajudar de como devo fazer para ele chamar o relatório do BD da linha connect?
De já agradeço a todos.
Estou com uma dúvida com relação ao Crystal Repor 8.5 que vou tentar passar para ver se alguém pode me ajudar.
Criei um relatório no Crystal com algumas tabelas do BD mysql 5.1, ao concluir o relatório o Crystal ja deixa gravado internamente no menu Database no submenu Set Location, o nome do banco e as tabelas que eu usei, pois bem, ai é que esta a minha dúvia, quando passo através do VB6 a linha de codigo para chamar este relatório, a linha de codigo é esta:
With CrystalReport1
[txt-color=#e80000].Connect = [Ô]DSN = xxxxt ;DATABASE=xxx ;UID = xxx; PWD=xxx[Ô][/txt-color]
.ReportFileName = App.Path & [Ô]\RELATORIOS\xxxx.rpt[Ô]
.SelectionFormula = formula
.WindowState = crptMaximized [ô]maximiza a tela do relatório
.Destination = crptToWindow
.Action = 1
End With
Ainda que eu mude toda a linha do connect, para o VB6 direcionar a impressão para outro BD, na hora de imprimir o relatório o Crystal vai sempre imprimir os dados do BD que esta gravado internamente no Set Location, e não os dados do BD que estou passondo via codigo no Connect.
Alguém poderia me ajudar de como devo fazer para ele chamar o relatório do BD da linha connect?
De já agradeço a todos.
Olha, você pode seguir essa linha de pedir que o próprio relatório se conecte á base de dados, como na época do velho CR8.5 a Seagate ou a Business Objects indicavam, e isso é bastante interessante, por exemplo, para aplicações de consulta customizada, onde o próprio usuário [Ô]desenha[Ô] seus relatórios, e o relatório em si faz a consulta aos dados, filtragem, ordenação etc.
Um detalhe, é sempre lembrar de observar a opção do CR que [Ô]salva[Ô] os dados originais, e desmarcar isso...
Na minha opinião, mais prático e eficiente que você envie os dados já consultados (e que provavelmente já estão em alguma tela do seu aplicativo) diretamente ao relatório, evitando que ele faça conexões por conta própria.
E isso pode ser feito como no exemplo do trecho á seguir:
Obs: Você pode continuar carregando arquivos CR externos, e ainda descartar dados salvos via código, como em:
Um detalhe, é sempre lembrar de observar a opção do CR que [Ô]salva[Ô] os dados originais, e desmarcar isso...
Na minha opinião, mais prático e eficiente que você envie os dados já consultados (e que provavelmente já estão em alguma tela do seu aplicativo) diretamente ao relatório, evitando que ele faça conexões por conta própria.
E isso pode ser feito como no exemplo do trecho á seguir:
[ô]...
Dim cnn As New ADODB.Connection()
Dim rs As New ADODB.Recordset()
Dim lstrSQL As String
Dim crpt As New MeuCrystalReport
cnn.ConnectionString = [Ô]Provider=MSDASQL.1;Integrated Security=SSPI;Data Source=192.168.0.1;Initial Catalog=Catalogo;[Ô]
cnn.Open()
rs.Open([Ô] SELECT * FROM [tabela][Ô], cnn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
crpt.SetDataSource(rs)
CrystalReportViewer1.ReportSource = crpt
cnn.Close()
[ô]...
Obs: Você pode continuar carregando arquivos CR externos, e ainda descartar dados salvos via código, como em:
[ô]...
Dim oCrApp As New CRAXDRT.Application
Dim crpt As CRAXDRT.Report
Set crpt = oCrApp.OpenReport(App.Path & [Ô]\RELATORIOS\xxxx.rpt[Ô], 1)
crpt.DiscardSavedData
[ô]...
Professor não conseguir compreender esse modelo que você publicou, poderia me explicar mais detalhadamente.
Eu uso a string de conexão assim:
Conexao.ConnectionString = [Ô]Driver=MySQL ODBC 5.1 Driver; DATABASE=banco; SERVER=localhost; UID=root; PASSWORD=senha[Ô]
E o meu relatório tem o seguinte nome: tabela_precos.rpt, como eu faria para adaptar o seu modelo a minha strig de conexão, outra coisa noto que quando tendo rodar o modelo publicado aqui, ocorre um erro em duas linha:
Dim crpt As New MeuCrystalReport
Dim crpt As CRAXDRT.Report
Você saberia o motivo do erro. Continuo no aguardo de sua ajuda ou da ajuda dos colegas deste forum.
Eu uso a string de conexão assim:
Conexao.ConnectionString = [Ô]Driver=MySQL ODBC 5.1 Driver; DATABASE=banco; SERVER=localhost; UID=root; PASSWORD=senha[Ô]
E o meu relatório tem o seguinte nome: tabela_precos.rpt, como eu faria para adaptar o seu modelo a minha strig de conexão, outra coisa noto que quando tendo rodar o modelo publicado aqui, ocorre um erro em duas linha:
Dim crpt As New MeuCrystalReport
Dim crpt As CRAXDRT.Report
Você saberia o motivo do erro. Continuo no aguardo de sua ajuda ou da ajuda dos colegas deste forum.
CSAPI...adiciona o comando Reset na sua programação assim....
With CrystalReport1
.Reset
.Connect = [Ô]DSN = xxxxt ;DATABASE=xxx ;UID = xxx; PWD=xxx[Ô]
.ReportFileName = App.Path & [Ô]\RELATORIOS\xxxx.rpt[Ô]
.SelectionFormula = formula
.WindowState = crptMaximized [ô]maximiza a tela do relatório
.Destination = crptToWindow
.Action = 1
End With
e vê se funciona....
With CrystalReport1
.Reset
.Connect = [Ô]DSN = xxxxt ;DATABASE=xxx ;UID = xxx; PWD=xxx[Ô]
.ReportFileName = App.Path & [Ô]\RELATORIOS\xxxx.rpt[Ô]
.SelectionFormula = formula
.WindowState = crptMaximized [ô]maximiza a tela do relatório
.Destination = crptToWindow
.Action = 1
End With
e vê se funciona....
Inseri o .Reset conforme sugestão acima, mas não deu certo, alguém teria uma outra sugestão?
Grato
Grato
Tópico encerrado , respostas não são mais permitidas