สิ่งที่จำเป็น (Prerequisites)
- Microsoft SQL Server 2005 Express
- Crystal Report Bsic for Visaul Studio 2008
- Microsoft Visual Studio 2008 Professionan Edition
Download source:http://cid-7d608959d854cb28.skydrive.live.com/embedrowdetail.aspx/SourcesCode/WebSite|_Crystal|_13-10-2008.zip
ต่อเนื่องจากบทความ How to use AttachDbFilename binding data in CrystalReport ซึ่งเป็นแอพบน Desktop บทความนี้จึงขอออกรายงานบน Web บ้าง เผื่อว่าสิ่งเล็กๆ น้อยๆ เหล่านี้จะเป็นผลประโยชน์แก่สังคมบ้าง… หากจะช่วยเติมเต็มให้ความขัดแย้งในสังคมไห้เบาบางลง บ้านเมืองประเทศชาติจะได้ก้าวเดินในก้าวต่อๆ ไป…
เป้าประสงค์ของเรา:
ออกรายงานสินค้า และสามารถกรองดูช่วงข้อมูลตามรหัสสินค้า
สร้างโปรเจ็กต์:
1. สร้างโปรเจ็กต์ด้วยเทมเพลต ASP.NET Web site
2. คลิกขวาบน โปรเจ็กต์ => Add New Item… เลือก Item template DataSet
3. ดับเบิ้ลคลิกไปที่ DataSet เพื่อเข้าหน้าจอ Dataset designer จากนั้นคลิกลงบน Server Explorer เพื่อแสดงหน้าต่าง Server Explorer ให้เราทำการสร้าง Connecttion ไปยังฐานข้อมูล Northwind ในบทความนี้ขอใช้ข้อมูลในตาราง Products ทำลากตาราง Products มาวางบน Dataset designer ดังรูป
4. หลังจากเราทำการสร้าง DataSet เรียบร้อยแล้วเบื้องหลัง VS 2008 จัดการ Gen ConnectionString ไว้ในไฟล์ web.config ดังรูป
ออกแบบรายงาน ด้วย Crystal Report:
1. คลิกขวาบน โปรเจ็กต์ => Add New Item… เลือก Item template Crystal Report
2. เลือก Using the Report Wizard > Standard > คลิก OK
3. เลือก Data Source จาก Project Data > ADO.Net DataSet > DataSet1 > คลิกเลือก Product และเลือกฟิลด์ที่ต้องการ
4. กด Next…. จนมาถึง Finish เป็นอันจบกระบวนการผูกข้อมูลให้ Crystal Report ผ่าน DataSet
นำรายงานไปแสดงบน Page ASP.NET:
ลาก CrystalReportViewer มาวางบน Page พร้อม TextBox และ Button เพื่อเป็นกล่องใส่เงื่อนไขรายงาน และปุ่มค้นหา แล้วทำการโค้ดดิ้งได้เลยครับ
โค้ดดิ้ง:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page {
string strUsr = "";
string strPwd = "";
string strServer = "";
string strDB = "";
string strPwd = "";
string strServer = "";
string strDB = "";
protected void Page_Load(object sender, EventArgs e)
{
strUsr = "dbUser";
strPwd = "dbPass";
strServer = @".\SQLEXPRESS";
strDB = "ServicesMSDB";
{
strUsr = "dbUser";
strPwd = "dbPass";
strServer = @".\SQLEXPRESS";
strDB = "ServicesMSDB";
if (this.Session["ReportSource"] != null)
CrystalReportViewer1.ReportSource = this.Session["ReportSource"];
}
CrystalReportViewer1.ReportSource = this.Session["ReportSource"];
}
private void showReport()
{
{
string strConn = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
using (System.Data.SqlClient.SqlConnection Conn = new System.Data.SqlClient.SqlConnection(strConn))
{
if (Conn.State == ConnectionState.Closed)
Conn.Open();
using (System.Data.SqlClient.SqlConnection Conn = new System.Data.SqlClient.SqlConnection(strConn))
{
if (Conn.State == ConnectionState.Closed)
Conn.Open();
DataTable tmpTable = new DataTable();
string sql = "SELECT * FROM Products where ProductID between ‘" + TextBox1.Text.Trim() + "’ and ‘" + TextBox2.Text.Trim() + "’";
System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand(sql, Conn);
System.Data.SqlClient.SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
tmpTable.Load(dr);
}
dr.Close();
string sql = "SELECT * FROM Products where ProductID between ‘" + TextBox1.Text.Trim() + "’ and ‘" + TextBox2.Text.Trim() + "’";
System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand(sql, Conn);
System.Data.SqlClient.SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
tmpTable.Load(dr);
}
dr.Close();
if (tmpTable.Rows.Count > 0)
{
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
rpt.Load(Server.MapPath("CrystalReport.rpt"));
rpt.SetDatabaseLogon(strUsr, strPwd, strServer, strDB);
rpt.SetDataSource(tmpTable);
this.Session["ReportSource"] = rpt;
CrystalReportViewer1.ReportSource = this.Session["ReportSource"]; ;
}
}
}
{
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
rpt.Load(Server.MapPath("CrystalReport.rpt"));
rpt.SetDatabaseLogon(strUsr, strPwd, strServer, strDB);
rpt.SetDataSource(tmpTable);
this.Session["ReportSource"] = rpt;
CrystalReportViewer1.ReportSource = this.Session["ReportSource"]; ;
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
showReport();
}
}
{
showReport();
}
}
Download source:http://cid-7d608959d854cb28.skydrive.live.com/embedrowdetail.aspx/SourcesCode/WebSite|_Crystal|_13-10-2008.zip
แหล่งข้อมูลศึกษาเพิ่มเติม:
No comments:
Post a Comment