วิธีสลับสีแถวข้อความใน Crystal Report เมื่อมีการจัด Group

ในการอ่านหรือดูรายงานหนึ่ง ๆ นั้น แม้ข้อมูลจะมีการจัดเป็นข้อ ๆ แล้วหรือมีการจัดกลุ่มข้อความนั้นแล้วก็ตาม แต่เมื่อข้อมูลมีจำนวนมาก ก็อาจทำให้เราวิงเวียน ตาลายได้

ดังนั้นในฐานะผู้จัดทำรายงานคนหนึ่ง ก็พยายามหาทางให้ผู้ใช้สามารถอ่านรายงานได้ง่าย โดยการใส่สีข้อความสลับบรรทัดนั่นเอง 

 

โดยปกตินั้น การใส่สีสลับบรรทัดสามารถทำได้โดยวิธีง่าย ๆ นั้นคือ

if row mod 2 = 0 then   //ตรวจสอบว่าแถวนั้นเป็นแถวคู่หรือไม่

   color(240,240,240)    //ถ้าใช่แสดงสี

else crNocolor             //ถ้าไม่ใช่ไม่ต้องแสดงสี

ซึ่งจะทำให้ได้ผลลัพธ์ดังรูป

สลับสี ก่อน

จากรูปจะเห็นได้ว่า ข้อมูลมีการสลับสีแล้ว แต่เนื่องจากข้อมูลถูก Group จะพบว่า ข้อมูลที่มี 1 record ก็มีการสลับสีด้วย ซึ่งผู้เขียนไม่ต้องการให้มีการสลับสีกรณีที่ข้อมูลมีเพียง 1 ดังนั้นผู้เขียนจึงปรับวิธีการเขียนใหม่ดังนี้

  1. เพิ่ม Formula Fields
    1. ตัวที่ 1 ตั้งชื่อว่า ffRowCount เขียน Code ภายในดังนี้

      shared numbervar
      rowcnt;
      rowcnt := rowcnt+1;

    2. ตัวที่ 2 ตั้งชื่อว่า ffRowReset เขียน Code ภายในดังนี้

      shared numbervar
      rowcnt:
      rowcnt := 0;

  2. นำตัวที่ 1.1 ใส่ไว้ในส่วนของ Details และเลือก Suppress
  3. นำตัวที่ 1.2 ใส่ไว้ในส่วนของ Group 2(คณะ) เนื่องจากต้องการให้มีการ reset เมื่อมีการเปลี่ยน Group และเลือก Suppress
  4. ส่วนของ Details ให้จัดการดังนี้
    1. Click ขวา เลือก Section Expert
    2. Click เลือก Tab Color
    3. ทำเครื่องหมาย / หน้า Background Color
    4. กดปุ่ม x-2 หลักช่องสี
    5. เขียน Code ดังนี้

      shared numbervar rowcnt;
      if remainder(rowcnt,2) = 0 then
         color(240,240,240)
      else crNocolor

  5. จากนั้นลอง run ผลลัพธ์ดังรูป
    สลับสี หลัง

จะเห็นได้ว่า ข้อมูลที่มีเพียง 1 record นั้นจะไม่มีสี

 

ผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อยสำหรับผู้อ่านนะคะ

แล้วพบกันใหม่ตอนหน้าค่ะ 

Leave a Reply