Posted at :
Jun/13/2007
Kadang kala kita membutuhkan data untuk keperluan laporan dimana datanya di filter dalam interval tanggal tertentu. Ada beberapa cara untuk melakukan hal tersebut, diantaranya yaitu : Menggunakan filtering data langsung di SQL statementnya, atau filtering record via datasource yang digunakan secara offline (misalnya menggunakan DataTable).
Kalau kita gunakan SQL statement anda tinggal gunakan klausa "Where DateOrder Between...And...". Kalau kita gunakan DataTable sebagai sumber data bagaimana caranya? Yang perlu dilakukan hanyalah dengan menggunakan properti RowFilter yang di assign dengan value "OrderDate >= ... And OrderDate <= ..." dengan asumsi kolom yang digunakan untuk pencarian data yaitu kolom OrderDate.
Dalam contoh ini saya menggunakan tabel Orders yang terdapat di database Northwind. Di form yang digunakan ditambahakan dua buah DateTimePicker untuk memilih tanggal order yang akan ditampilkan. Kolom yang digunakan untuk pencarian data yaitu kolom OrderDate. Let's see the code below :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace CrystalReportsApp
{
public partial class frmOrdersReport : Form {
DataTable dtOrders = new DataTable();
rptOrders rpt = new rptOrders();
public frmOrdersReport()
{
InitializeComponent();
}
private void SetReportDataSource()
{
using (SqlConnection sqlConn = new SqlConnection(
@"Database=Northwind2005;Uid=sa;Pwd=sql2005;Server=.\SQL2005"))
{
using (SqlCommand sqlCmd = new SqlCommand())
{
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText = "Select * From Orders";
if (sqlConn.State == ConnectionState.Closed) sqlConn.Open();
dtOrders.Load(sqlCmd.ExecuteReader());
rpt.SetDataSource(dtOrders);
crystalReportViewer1.ReportSource = rpt;
}
}
}
private void frmOrdersReport_Load(object sender, EventArgs e)
{
SetReportDataSource();
}
private void btnSeeOrders_Click(object sender, EventArgs e)
{
string strDate1 = dateTimePicker1.Value.ToString();
string strDate2 = dateTimePicker2.Value.ToString();
dtOrders.DefaultView.RowFilter = "OrderDate >= '" + strDate1 +
"' And OrderDate <= '" + strDate2 + "'";
rpt.SetDataSource(dtOrders.DefaultView);
crystalReportViewer1.ReportSource = rpt;
}
}
}
Info: Ebook-ebook yang tersedia yang dapat dipesan secara langsung atau melalui google play store.