สิ่งที่จำเป็น (Prerequisites)
- Microsoft Visual Studio 2008 (C#)
- SQL Server (2005,2008) Express
Download source:http://cid-7d608959d854cb28.skydrive.live.com/embedrowdetail.aspx/SourcesCode/WinCrystalReportRowColor|_18-11-2008.zip
หากว่าเราได้รับโจทย์จากผู้ใช้งานฝ่ายคลังสินค้าว่า ต้องการรายงานสินค้าทั้งหมดในคลัง โดยตรวสอบว่าถ้าจำนวนในสต็อก (UnitInStock) ไม่มี (=0) ให้ลงสีเร็คคอร์ตดังกล่าวให้เป็นสีแดง เพื่อให้ง่ายในการตรวจสอบรายงาน และเราจำเป็นต้องใช้งาน Crystal Report เนื่องจากว่าเราต้องผูกเข้ากับระบบเดิม(เรื่องสมมุติ) โดยเป้าประสงค์ของผู้ใช้งานต้องการรายงานดังรูป
เริ่มสร้างโปรเจ็กต์(Windows Application) กันเลย จากนั้นเพิ่มไอเทม DataSet เข้าไป
คลิกเมาส์บน Server Explorer
และสร้างคอนเนคชันชี้ไปที่ฐานข้อมูลที่เราต้องการ ในที่นี้ใช้ฐานข้อมูล Nortwind จากนั้นลากตาราง Products ไปวางบนพื้นที่ออกแบ Dataset การออกแบบ DataSet ของเราเป็นอันเรียบร้อยครับ ทำการบันทึกและปิดมัน
ทำการเพิ่มไอเทม Crystal Report เข้าไปในโปรเจ็กต์
เลือก Report Wizard
เลือกแหล่งข้อมูล (DataSource) เลือก Project Data ADO.NET DataSet…. และเลือกฟิลด์ที่ต้องการ
กด Next,Next,Next และ Finish ขั้นตอนการผูกข้อมูลใส่ Crstal Report เป็นอันเสร็จเรียบร้อย
ไปทำการใส่สีในเร็กคอร์ตที่ไม่มีสต็อก (สต็อกเป็น 0) ให้เป็นสีแดงโดยการคลิกขวา บน Section Detail แล้วเลือก Section Expert…
เมื่อเราเข้ามาที่หน้าต่าง Section Expert ไปที่แท็บ Color ติ๊ก Backgroung Color เพื่อเป็นการใส่สีพื้นให้รายงาน แต่เราจะไม่ใส่ทุกเร็กคอร์ต
เราจะใส่เฉพาะเร็กคอร์ตที่จำนวนสต็อกเป็นศูนย์เท่านั้น เราต้องเข้าไปใส่เงื่อนไขใน Formula ครับโดยคลิกเมาส์บนปุ่ม X*2 Crystal Report จะนำเราเข้าสู่หน้าจอ Formula Workshop ให้เราใส่ Scrip นี้ลงไปครับ
เราจะใส่เฉพาะเร็กคอร์ตที่จำนวนสต็อกเป็นศูนย์เท่านั้น เราต้องเข้าไปใส่เงื่อนไขใน Formula ครับโดยคลิกเมาส์บนปุ่ม X*2 Crystal Report จะนำเราเข้าสู่หน้าจอ Formula Workshop ให้เราใส่ Scrip นี้ลงไปครับ
if {Products.UnitsInStock}=0 then crRed else crNoColor
แค่นี้ก็เป็นอันเรียบร้อย ให้เรากดปุ่ม Save and close เพื่อบันทึก script และออกจากหน้า Formula Workshop
จากนั้นเราไปใส่โค้ตใน Form1 เพื่อดึงรายงานไปแสดงกันเลยครับ
Code:
private void Form1_Load(object sender, EventArgs e)
{
string sql = "Select * from Products";
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["WinCry.Properties.Settings.NorthwindConnectionString"].ConnectionString;
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strConn);
conn.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, conn);
System.Data.SqlClient.SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (dr.HasRows)
{
dt.Load(dr);
}
dr.Close();
CrystalReport1 crp = new CrystalReport1();
crp.SetDataSource(dt);
crystalReportViewer1.ReportSource = crp;
}
No comments:
Post a Comment