Pular para o conteúdo principal

Passando parâmetros para o Crystal Reports 8.5/11.5. Estrelando: O VB6.


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

Postagens mais visitadas deste blog

Crystal Reports XI - VB6 - Permission Denied - Ou: Carregando imagens dinamicamente no Crystal Reports

(Trying) English version : Category: Tools __________________________ If you are trying to dinamically set an image into the control Picture (ICROleObject) and you are getting the error "Permission Denied" when you are using SetOleLocation method, I suggest you try this following code instead of SetOleLocation method: Private Sub Section1_Format(ByVal pFormattingInfo As Object)     Dim logofile As String     logofile = app.Path & "\logo.jpg"     If Dir$(file) <> "" Then     'File exists...         Set Picture2.FormattedPicture = LoadPicture(logofile)         'FormattedPicture method used instead of SetOleLocation...     Else         Picture2.Suppress = True 'If does not exist, suppress that control.     End If End Sub That error happens because your code is probably located on wrong event. It must be placed exactly on " SectionXXX_Format" event where picture object is. Português : Categoria: Ferramentas

Ransomware WannaCry - Backups e mudança de hábitos

O Ransomwhare WannaCry é um vírus que criptografa e inutiliza os arquivos de uma empresa ou usuário comum e deixa as instruções de como proceder para restabelecer o acesso a estes arquivos, sempre cobrando valores que geralmente são relacionados com a importância e tamanho dos arquivos do usuário. Ele não sequestra absolutamente nenhum arquivo, os dados continuam no computador do usuário, mas criptografados... "embaralhados". O vírus  faz isso não somente com os arquivos que tem acesso no computador, mas em todos os outros computadores e dispositivos que tiverem COMPARTILHAMENTO aberto na rede (se o computador não tem compartilhamento ou se o compartilhamento é restrito (a usuário que não faz login no domínio), é impossível o vírus se instalar por manifestação própria ) .  É importante ressaltar que até mesmo as cópias de segurança armazenadas em HDs externos, pendrives E NUVEM (neste caso, por sincronização) serão afetados. Não é saudável, mas é importante im