Num cenário onde já se possui o relatório criado no Crystal e é necessário passar parâmetros via código pelo VB sem apresentar a tela de valores do CR e sem muita conversa, segue a solução minerada:
Adicionar componentes:
Crystal Report Viewer Control
Crystal Activex Report Viewer Library 11.5
No Project Explorer, -Add -> Crystal Report Component (Relatório Existente)
-Indique seu relatório previamente criado no Crystal
-Informe "sim" para as opções de criar/inserir form com visualizador do relatório e alterar opção de start do projeto.(opcional)
Não precisa criar fórmula ou parâmetro, basta passar o valor para o campo da tabela, conforme abaixo:
Opção 1 de código:Simplesmente definir:
Private Sub Form_Load()
CrystalReport1.EnableParameterPrompting = False
'Passando o parâmetro p/ "tabela.campo" - Inclua as chaves{}!
'Se preferir, concatene a uma textbox.text, por exemplo.
CrystalReport1.RecordSelectionFormula = "{compras.nCompra} = " & Textbox1.Text
'CRViewer1 é o objeto Crystal Viewer, previamente adicionado ao form.
CRViewer1.ReportSource = CrystalReport1
CRViewer1.ViewReport
Screen.MousePointer = vbDefault
End Sub
Não esqueça de inserir em Form_QueryUnload:Set CrystalReport1 = Nothing
'Opção 2 de código:'Na seção General, do VB6, form onde há o CRViewer:
Dim Report As New CrystalReport1
Dim CRXFormulaFields As CRAXDRT.FormulaFieldDefinitions
Dim CRXFormulaField As CRAXDRT.FormulaFieldDefinition
Private Sub Form_Load()
Set CRXFormulaFields = Report.FormulaFields
Report.EnableParameterPrompting = False
'Passando o parâmetro para a "tabela.campo":
Report.RecordSelectionFormula = "{compras.nCompra} = 116"
'CRViewer1 é o objeto Crystal Viewer, previamente adicionado ao form.
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
Screen.MousePointer = vbDefault
End Sub
NESSE CASO, inserir em Form_QueryUnload:Set Report = Nothing
Agradecimentos às contribuições de Carlos Eduardo Montoya.
EoP
__________________________
Comentários
Postar um comentário