Thursday, December 22, 2011

ทำรายงาน Crystal Report โดยใช้ Class

ทำรายงาน Crystal Report โดยใช้ Class
หัวข้อนี้ได้แรงบันดาลใจจากกระทู้นี้ http://www.greatfriends.biz/?130875
ขอแบ่งปันประสบการณ์ด้าน Crystal Report ไว้เป็นอีกหนึ่งทางเลือกครับ

เหมาะกับใคร? : เหมาะกับคนที่ชอบดึงข้อมูลจาก Database มาแล้วโยนเข้า Crystal Report เพื่อออกรายงาน

วัตถุประสงค์ : นำเสนอวิธีการทำ Crystal Report อีกแนวทางหนึ่งสำหรับคนที่ชอบ ดึงข้อมูลมาแล้วโยนเข้า Crystal Report
เครื่องมือที่ใช้

เริ่มกันเลย
หลักการทำรายงานด้วย Crystal Report มี 2 ข้อ
1. การเตรียมโครงข้อมูลและจัดรูปแบบรายงาน
2. การโยนข้อมูลใส่ Crystal Report

1. การเตรียมโครงข้อมูลและจัดรูปแบบรายงาน
หลักการสำคัญข้อนี้คือ จัดทำโครงข้อมูลใน Crystal Report ขอยกตัวอย่างการออกรายงานข้อมูลพนักงาน ประกอบด้วย
- Id เป็น int
- Name เป็น string
- Position เป็น string
- Department เป็น string
- Salary เป็น decimal

โดยปกติเห็นหลายๆ คนจะทำเป็น DataSet แต่ผมชอบทำเป็น Class แล้วจับใส่ Crystal Report ผมจะเขียน Class Employee ขึ้นมาดังภาพต่อไปนี้


เสร็จแล้วต้อง Build Project ก่อนนะครับ ไม่งั้น Crystal Report จะมองไม่เห็นคลาส Employee


ต่อไปนำโครงเข้ามาใน Crystal Report และจัดรูปแบบกัน โดยสร้างรายงาน Crystal Report ก่อนตามภาพ


ตั้งชื่อเป็น rptEmployee.rpt ครับ หลังจากกด Add จะได้ก็เลือกประเภทรายงาน ตามภาพต่อไป

เลือกแบบ Standard แล้วกด OK
Crystal Report จะให้เลือกโครงข้อมูลให้คลิ๊กที่ Project Data -> .NET Objects หา Class Employee ที่ทำไว้ดังภาพ

สังเกตุว่า Class Employee จะ ขึ้นต้นด้วย Name Space ในโปรเจคนี้ผมตั้งชื่อ Name Space เป็น SampleCrystalReport
คลาสข้อมูลจึงเป็น SampleCrystalReport.Employee คลิ๊กที่คลาส SampleCrystalReport.Employee แล้วกดปุ่ม > ด้านขวา
เพื่อเลือกคลาส จากนั้นกดปุ่ม Next > ด้านล่าง ต่อไปก็ทำตามภาพจนกระทั่งกดปุ่ม Finish ครับ




ตอนนี้เราได้ก็ได้โครงสร้างและรูปแบบรายงานแล้ว ดังภาพด้านล่าง


ต่อมาทำฟอร์มแสดงข้อมูล ผมขอใช้ Windows Form นะครับ ง่ายดี
สร้าง Windows Form ฟอร์มมา 1 ตัวครับ แล้วเอา Crystal Report Viewer มาวางไว้ ดังภาพ


2. การนำข้อมูลใส่ให้ Crystal Report
ตอนนำข้อมูลโยนใส่ Crystal Report จะนำมาจากไหนก็ได้ มีข้อแม้ว่าต้องเตรียมข้อมูลให้อยู่ในรูปแบบ Collection หรือ DataTable
โดยถ้าเป็นรูปแบบ Collection เช่น
List<คลาสข้อมูล> Property ต้องเป็น Public และชื่อ Property ต้องตรงกับชื่อฟิล์ดใน Crystal Report
หรือถ้าเป็น DataTable ก็ต้องมีชื่อฟิล์ดตรงกับชื่อฟิล์ดใน Crystal Report ด้วยเช่นกัน
อาจใช้วิธีปรับแต่ง SQL Statement แบบนี้ก็ได้เช่น
Select EmpID AS Id, TName + FName + " " + LName AS Name, ..... พอจะนึกออกใช่มั้ยครับ

มาลุยต่อผมจะยกตัวอย่าง Code แบบใช้ Collection ในที่นี้ขอใช้ List<Employee> โดยเขียน Code ที่ Event Form_Load ดังนี้


เสร็จแล้ว Run Program จะได้ผลลัพธ์ตามนี้



ref : http://greatfriends.biz/webboards/msg.asp?id=130890
หวังว่าจะเป็นประโยชน์นะครับ

No comments:

Post a Comment