CRYSTAL 11 ... ESTA E A MELHOR FORMA???
Pessoal, estou migrando do crystal 5 para o 11 ... imaginem o quanto estou apanhando!!!
Recursos: VB6 + SQL2000 + Crystal 11 (o relatório foi feito desenhado no crystal)
Estou fazendo assim:
Form1: tenho um command1 com o seguinte codigo:
Private Sub Command1_Click()
Set CRApplication = New CRAXDRT.Application
Set CRObject = CRApplication.OpenReport(App.Path & "\meu_relatorio.rpt")
CRObject.DiscardSavedData
Set Rs = New ADODB.Recordset
Sql = "Meu sql"
Rs.CursorLocation = adUseClient
Rs.Open Sql, minha_conexao, adOpenStatic, adLockReadOnly
CRObject.Database.SetDataSource Rs
Form2.CrystalActiveXReportViewer1.ReportSource = CRObject
Form2.CrystalActiveXReportViewer1.ViewReport
Rs.Close
Set Rs = Nothing
Form2.Show
End Sub
*************************************************************************************************
Form2: apenas o compontente CrystalActiveXReportViewer1
*************************************************************************************************
Então algumas dúvidas:
1-Está funcionando, mas é a melhor forma?
2-Como fazer no caso de usar uma stored procedure?
3-Como faço para abrir 2 relatórios se existe apenas um form (Form2) com o CrystalActiveXReportViewer1?
4-é possÃvel abri o relatório sem usar o CrystalActiveXReportViewer1? Se sim como fazer?
5-Qualquer dica é bem vinda, pois estou apanhando um bocado e olha que já pesquisei bastante inclusive no VBbania, que por sinal foi onde comecei a ver a luz ao fim do tunel!
Muito obrigado!
Um abraço,
Christiano Dias
Recursos: VB6 + SQL2000 + Crystal 11 (o relatório foi feito desenhado no crystal)
Estou fazendo assim:
Form1: tenho um command1 com o seguinte codigo:
Private Sub Command1_Click()
Set CRApplication = New CRAXDRT.Application
Set CRObject = CRApplication.OpenReport(App.Path & "\meu_relatorio.rpt")
CRObject.DiscardSavedData
Set Rs = New ADODB.Recordset
Sql = "Meu sql"
Rs.CursorLocation = adUseClient
Rs.Open Sql, minha_conexao, adOpenStatic, adLockReadOnly
CRObject.Database.SetDataSource Rs
Form2.CrystalActiveXReportViewer1.ReportSource = CRObject
Form2.CrystalActiveXReportViewer1.ViewReport
Rs.Close
Set Rs = Nothing
Form2.Show
End Sub
*************************************************************************************************
Form2: apenas o compontente CrystalActiveXReportViewer1
*************************************************************************************************
Então algumas dúvidas:
1-Está funcionando, mas é a melhor forma?
2-Como fazer no caso de usar uma stored procedure?
3-Como faço para abrir 2 relatórios se existe apenas um form (Form2) com o CrystalActiveXReportViewer1?
4-é possÃvel abri o relatório sem usar o CrystalActiveXReportViewer1? Se sim como fazer?
5-Qualquer dica é bem vinda, pois estou apanhando um bocado e olha que já pesquisei bastante inclusive no VBbania, que por sinal foi onde comecei a ver a luz ao fim do tunel!
Muito obrigado!
Um abraço,
Christiano Dias
Nos tempos de Crystal até o 9 tinha a OCX do Crystal... Mas dessa forma como vc está fazendo, acredito que seja a melhor. A melhor junto com o método que compila o relatório junto com o VB (que é meu preferido) (são duas formas diferentes).
Bom, como vc tem só um form para o crystal e vc quer exibir mais de um relatório ao mesmo tempo, o que vc pode fazer é criar instà ¢ncias do form, ao invés de chamar diretamente o form...
Por exemplo:
Dim frmCrystl1 As FrmCrystal
Dim frmCrystl2 As FrmCrystal
etc...
Pelo menos era assim que eu fazia quando precisava de várias janelas com o Viewer.
Abraços!
Bom, como vc tem só um form para o crystal e vc quer exibir mais de um relatório ao mesmo tempo, o que vc pode fazer é criar instà ¢ncias do form, ao invés de chamar diretamente o form...
Por exemplo:
Dim frmCrystl1 As FrmCrystal
Dim frmCrystl2 As FrmCrystal
etc...
Pelo menos era assim que eu fazia quando precisava de várias janelas com o Viewer.
Abraços!
Rollo, obrigado pela ajuda!
Agora outra dúvida, quando eu crio instà ¢ncia deste tipo ... basta fechar o form que contém o viewer que a instà ¢ncia é descarregada da memória ???
E quanto a usar uma stored procedure? Como seria?
A melhor junto com o método que compila o relatório junto com o VB (que é meu preferido)
(são duas formas diferentes). Como assim??? Qual seria a outra forma???
Obrigado,
Christiano Dias
Agora outra dúvida, quando eu crio instà ¢ncia deste tipo ... basta fechar o form que contém o viewer que a instà ¢ncia é descarregada da memória ???
E quanto a usar uma stored procedure? Como seria?
A melhor junto com o método que compila o relatório junto com o VB (que é meu preferido)
(são duas formas diferentes). Como assim??? Qual seria a outra forma???
Obrigado,
Christiano Dias
Alias,
Acho que é melhor usar uma procedure !!!
- Já criei a procedure no sql
- Já desenhei o relatório dentro do crystal
- Agora como executar esta procedure no vb e passar o resultado para o CRObject.Database.SetDataSource
Obrigado,
Christiano Dias
Acho que é melhor usar uma procedure !!!
- Já criei a procedure no sql
- Já desenhei o relatório dentro do crystal
- Agora como executar esta procedure no vb e passar o resultado para o CRObject.Database.SetDataSource
Obrigado,
Christiano Dias
Rollo,
Consegui usar stored procedure para o relatório!
Agora outra dúvida, quando eu crio instà ¢ncia deste tipo ... basta fechar o form que contém o viewer que a instà ¢ncia é descarregada da memória ???
A melhor junto com o método que compila o relatório junto com o VB (que é meu preferido)
(são duas formas diferentes). Como assim??? Qual seria a outra forma???
Obrigado,
Christiano Dias
Consegui usar stored procedure para o relatório!
Agora outra dúvida, quando eu crio instà ¢ncia deste tipo ... basta fechar o form que contém o viewer que a instà ¢ncia é descarregada da memória ???
A melhor junto com o método que compila o relatório junto com o VB (que é meu preferido)
(são duas formas diferentes). Como assim??? Qual seria a outra forma???
Obrigado,
Christiano Dias
Bom,
Vou imaginar que fechando o form instà ¢nciado ... o recurso alocado na memória é descarregado ...
Obrigado,
Christiano Dias.
Vou imaginar que fechando o form instà ¢nciado ... o recurso alocado na memória é descarregado ...
Obrigado,
Christiano Dias.
Desculpe me por não responder antes... Mas sim, quando vc dá um unload no form, ele desaloca todos os recursos da memória.
Ou melhor, nós devemos acreditar que o VB faz isso pela gente.
Sobre as formas de se fazer um relatório...
Bom, tem o jeito que vc tá fazendo, abrindo o RPT do arquivo para a memória, com a variável do tipo CRAXDRT.
A outra forma seria incluir o RPT DENTRO do projeto. Assim, o RPT é compilado junto, e vc não precisa de um arquivo RPT externo. Aà nem precisa da variável CRXDRT pra abrir o report... O report passa a ser um objeto do VB.
Qualquer coisa, eu postei há um bom tempo atrás um exemplo completinho de Crystal. Tá na parte de downloads.
Abraço!
Ou melhor, nós devemos acreditar que o VB faz isso pela gente.

Sobre as formas de se fazer um relatório...
Bom, tem o jeito que vc tá fazendo, abrindo o RPT do arquivo para a memória, com a variável do tipo CRAXDRT.
A outra forma seria incluir o RPT DENTRO do projeto. Assim, o RPT é compilado junto, e vc não precisa de um arquivo RPT externo. Aà nem precisa da variável CRXDRT pra abrir o report... O report passa a ser um objeto do VB.
Qualquer coisa, eu postei há um bom tempo atrás um exemplo completinho de Crystal. Tá na parte de downloads.
Abraço!
Tópico encerrado , respostas não são mais permitidas