Olá Paulo! Eu utilizo Crystal 9, veja se te ajuda!
Eu crio um comando SELECT e no Form em que está o CRViewer, eu paço o resultado da minha consulta!
TXTDATADE => é um campo TEXT do meu Form
TXTDATAATE => é outro campo TEXT do meu Form
Sub Connect()
Set CON = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.Recordset")
CON.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "DataBaseBanco.mdb"
RS.CursorLocation = adUseClient
End Sub
Private Sub Imprimir_Click()
Dim SQL as String
SQL = "SELECT * FROM CAIXA WHERE DataPagto >= '" & txtDatade & "' and DataPagto <= '" & txtDataate & "'"
RS.Open SQL, CON, adOpenStatic, adLockOptimistic
If Not RS.EOF Then
VisualCaixa.Show
Else
MsgBox "Nenhum registro encontrado", vbCritical, "Não encontrado"
LimparCampos
End If
End Sub
' AQUI SÃO AS ROTINAS QUE VÃO NO FORM EM QUE ESTÁ O CRVIEWER
' O RS.DataSource é o resultado do SQL lá do outro FORM
Dim vReport As New crCaixa
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
vReport.ReportTitle = "Fluxo de Caixa"
vReport.Database.SetDataSource RS.DataSource
vReport.DiscardSavedData
vReport.VerifyOnEveryPrint = True
CRViewer91.ReportSource = vReport
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub