Crystal Report by DataSet
วิธีการสร้างหน้ารายงานที่จำเป็นต้องพิมพ์อย่างมีรูปแบบนั้น ณ ปัจจุบันนักพัฒนาคงใช้ Crystal Report (CR) กันอยู่แน่ๆเลย แต่หลังจากที่ใช้งาน CR ด้วยการเขียน Command แล้วเจอปัญหากรณีที่เป็น Report ที่มีจำนวนหน้ามากๆ ทำให้ตอนแสดงผล และทำการเปลี่ยนหน้าใหม่นั้นค่อนข้างช้า ดังนั้นผมจะขอแนะนำการเขียน Crystal Report โดยใช้ DataSet ในข้อมูลครับ
- ทำการเพิ่ม DataSet เข้าที่ Project ที่ชื่อว่า myDataSet ของเราก่อน
- ทำการสร้าง DataTable ตามข้อมูลที่เราต้องใช้งาน สมมติชื่อว่า myDataTable
- ทำการสร้างไฟล์ CrystalReport ตามรายงานที่เราต้องการ โดย Database Fields ให้เลือกเป็น myDataSet ของเรานั่นเอง และทำการวาง Field ต่างๆได้เลย โดยใช้ชื่อว่า CR.rpt
- สร้าง Crystal Report Viewer Control ที่หน้า aspx ชื่อว่า CrystalReportViewer1
- ทำการ Import Component ที่จำเป็นต้องใช้งานที่ aspx.vb
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Web
- ประกาศตัวแปรที่จำเป็นต้องใช้
Dim rpt as new ReportDocument
Dim ds as new myDataSet
- ทำการเพิ่มข้อมูลเข้าสู่ DataSet ไม่ว่าจะวิธีการใดก็ตาม ตัวอย่างจะทำการ Query Data แล้วใส่ DataSet ของเราดังนี้
sql = "select * from tbl"
dim da as new sqldataadapter(sql,conn)
da.fill(ds,"myDataTable")
Session("ss_myDataSet") = ds
- ทำการตั้งค่าต่างๆ ตอน PageLoad หรือตอนไหนก็ได้ตามที่เราต้องการให้รายงานแสดงผล
ds = Session("ss_myDataSet")
rpt.Load(Server.MapPath("Cr.rpt"))
rpt.SetDataSource(ds)
rpt.SetParameterValue("session_id", Session("id")) ' ## กรณีที่มี Parameter ส่งเข้าไปใน Crystal Report ด้วย
CrystalReportViewer1.ReportSource = rpt
CrystalReportViewer1.DataBind()
- หลังจากที่ Load ค่าต่างๆแล้ว ดังนั้นหลังจากที่ Page Unload ต้องทำการ Clear ค่าต่างๆออกด้วยดังนี้
rpt.Close()
rpt.Dispose()
เป็นอันเสร็จสิ้น โดยสมบูรณ์แบบครับ
- ทำการเพิ่ม DataSet เข้าที่ Project ที่ชื่อว่า myDataSet ของเราก่อน
- ทำการสร้าง DataTable ตามข้อมูลที่เราต้องใช้งาน สมมติชื่อว่า myDataTable
- ทำการสร้างไฟล์ CrystalReport ตามรายงานที่เราต้องการ โดย Database Fields ให้เลือกเป็น myDataSet ของเรานั่นเอง และทำการวาง Field ต่างๆได้เลย โดยใช้ชื่อว่า CR.rpt
- สร้าง Crystal Report Viewer Control ที่หน้า aspx ชื่อว่า CrystalReportViewer1
- ทำการ Import Component ที่จำเป็นต้องใช้งานที่ aspx.vb
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Web
- ประกาศตัวแปรที่จำเป็นต้องใช้
Dim rpt as new ReportDocument
Dim ds as new myDataSet
- ทำการเพิ่มข้อมูลเข้าสู่ DataSet ไม่ว่าจะวิธีการใดก็ตาม ตัวอย่างจะทำการ Query Data แล้วใส่ DataSet ของเราดังนี้
sql = "select * from tbl"
dim da as new sqldataadapter(sql,conn)
da.fill(ds,"myDataTable")
Session("ss_myDataSet") = ds
- ทำการตั้งค่าต่างๆ ตอน PageLoad หรือตอนไหนก็ได้ตามที่เราต้องการให้รายงานแสดงผล
ds = Session("ss_myDataSet")
rpt.Load(Server.MapPath("Cr.rpt"))
rpt.SetDataSource(ds)
rpt.SetParameterValue("session_id", Session("id")) ' ## กรณีที่มี Parameter ส่งเข้าไปใน Crystal Report ด้วย
CrystalReportViewer1.ReportSource = rpt
CrystalReportViewer1.DataBind()
- หลังจากที่ Load ค่าต่างๆแล้ว ดังนั้นหลังจากที่ Page Unload ต้องทำการ Clear ค่าต่างๆออกด้วยดังนี้
rpt.Close()
rpt.Dispose()
เป็นอันเสร็จสิ้น โดยสมบูรณ์แบบครับ
Comments
Post a Comment