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