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()

เป็นอันเสร็จสิ้น โดยสมบูรณ์แบบครับ

Comments

Popular posts from this blog

การตั้งเวลาระหว่าง Server และ Client

วิธีตั้งค่า NTP บน Primary Domain Controller

Installation and Run Node.JS on IIS