Kalo aku biasanya pake parameter mas. Kita buat dulu parameternya di CR, 
dah gitu baru kita lempar value dr textbox form ke parameter di CR. 
Cuman hati2 harus dengan silent biar ga muncul dialog pengisian 
parameter. ni kodingnya:
aku buat dulu Class baru namanya ClassReport isinya:

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class ClassReport
    Public Shared Sub ReportSilent(ByVal rpt As ReportDocument, ByVal 
VItem As String, ByVal PValue As String)
        Dim crParameterDiscreteValue As ParameterDiscreteValue
        Dim crParameterFieldDefinitions As ParameterFieldDefinitions
        Dim crParameterFieldLocation As ParameterFieldDefinition
        Dim crParameterValues As ParameterValues

        ' Get the report parameters collection
        crParameterFieldDefinitions = rpt.DataDefinition.ParameterFields
        ' Add a parameter value - START

        crParameterFieldLocation = crParameterFieldDefinitions.Item(VItem)
        crParameterValues = crParameterFieldLocation.CurrentValues
        crParameterDiscreteValue = New 
CrystalDecisions.Shared.ParameterDiscreteValue
        crParameterDiscreteValue.Value = PValue
        crParameterValues.Add(crParameterDiscreteValue)
        crParameterFieldLocation.ApplyCurrentValues(crParameterValues)
    End Sub
End Class
trus waktu di load reportnya tinggal kirim parameternya:
sekalian aku kasih full koding salah satu report viewer sy ya...

Imports System.Data
Imports System.Data.SqlClient
Imports HRApp.DBConnection
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared


Public Class frmPrintAbsensiAllViewer

    Private Sub frmAbsensiPeroranganViewer_Load(ByVal sender As Object, 
ByVal e As System.EventArgs) Handles Me.Load
        Try
            Dim objConn As SqlConnection
            Dim daT1 As SqlDataAdapter
            Dim Ds As DataSet
            Dim sSQL As String

            objConn = New SqlConnection(DbConString())
            objConn.Open()
            sSQL = "SELECT V_Hari_Kosong.Tanggal,  V_Hari_Kosong.NIK,  
V_Hari_Kosong.Nama_Lengkap, V_Hari_Kosong.Lokasi_Kantor, " _
                         & " V_NIK_Absensi.JMasuk,  
V_NIK_Absensi.JPulang,  V_NIK_Absensi.KetTdkMasuk, " _
                         & " V_NIK_Absensi.KetTerlambat, 
V_NIK_Absensi.KetPlgAwal, V_Hari_Kosong.Libur, V_NIK_Absensi.Lembur " _
                         & " FROM V_Hari_Kosong " _
                         & " LEFT OUTER JOIN V_NIK_Absensi ON 
(V_Hari_Kosong.Tanggal = V_NIK_Absensi.Tanggal)  AND (V_Hari_Kosong.NIK 
= V_NIK_Absensi.NIK) " _
                         & " WHERE V_Hari_Kosong.Tanggal BETWEEN " & 
SetDateNTime00(frmPrintAbsensiAll.TglAwal.Value) _
                         & " and " & 
SetDateNTime00(frmPrintAbsensiAll.TglAkhir.Value)

            If Len(frmPrintAbsensiAll.Lokasi.Text) > 0 Then

                sSQL = sSQL & " and Lokasi_Kantor='" & 
frmPrintAbsensiAll.Lokasi.Text & "' "

                If Len(frmPrintAbsensiAll.NGroup.Text) > 0 Then
                    sSQL = sSQL & " And V_Hari_Kosong.Nama_Group = " & 
SetInteger(frmPrintAbsensiAll.NGroup.Text)
                End If
                If Len(frmPrintAbsensiAll.NDept.Text) > 0 Then
                    sSQL = sSQL & " And V_Hari_Kosong.Departemen = " & 
SetInteger(frmPrintAbsensiAll.NDept.Text)
                End If
            End If
            sSQL = sSQL & " Order By V_Hari_Kosong.Tanggal"


            daT1 = New SqlDataAdapter(sSQL, objConn)
            Ds = New DataSet
            daT1.Fill(Ds, "Command")

            Dim rpt As New rptAbsensiPeroranganAll
            rpt.SetDataSource(Ds)

 
            ClassReport.ReportSilent(rpt, "VPeriode", 
frmPrintAbsensiAll.TglAwal.Value.Date & " s/d " & 
frmPrintAbsensiAll.TglAkhir.Value.Date)

            CR1.ReportSource = rpt


            objConn.Close()
        Catch ex As Exception

        End Try
    End Sub
End Class

===========
  ClassReport.ReportSilent(rpt, "VPeriode", 
frmPrintAbsensiAll.TglAwal.Value.Date & " s/d " & 
frmPrintAbsensiAll.TglAkhir.Value.Date)


ini aku kirim nilai dr frmPrintAbsensiAll.TglAwal.Value.Date & " s/d " & 
frmPrintAbsensiAll.TglAkhir.Value.Date ke parameter VPeriode

Moga membantu.
Haryanto
Just Newbie

Kirim email ke