CRYSTAL 11 ... ESTA E A MELHOR FORMA???

USUARIO.EXCLUIDOS 08/06/2005 17:03:38
#87814
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
USUARIO.EXCLUIDOS 08/06/2005 18:48:04
#87842
Resposta escolhida
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!
USUARIO.EXCLUIDOS 09/06/2005 08:51:23
#87923
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
USUARIO.EXCLUIDOS 09/06/2005 10:56:38
#87964
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
USUARIO.EXCLUIDOS 10/06/2005 08:43:21
#88160
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
USUARIO.EXCLUIDOS 10/06/2005 15:57:01
#88279
Bom,

Vou imaginar que fechando o form instà¢nciado ... o recurso alocado na memória é descarregado ...

Obrigado,

Christiano Dias.
USUARIO.EXCLUIDOS 10/06/2005 18:43:49
#88348
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!
Tópico encerrado , respostas não são mais permitidas