CrystalReport : ข้อมูลส่วน DetailSection กับการแสดงผลส่วน PageFooterSection

เนื่องจากผู้เขียนได้รับมอบหมายให้มีการตรวจสอบข้อมูลว่า ถ้ามีข้อมูลใน Field1 ขึ้นต้นด้วยเครื่องหมาย “*” ต้องแสดงข้อความที่ส่วนท้ายของรายงานทุกแผ่นว่า “มีข้อมูลที่มีเครื่องหมาย * นำหน้า”

ผู้เขียนจึงได้ทำการสร้าง Formula Field ขึ้นมาทั้งหมด 4 อัน คือ

  1. ffCountSubjectStar : ใช้สำหรับเก็บค่าจำนวนข้อมูลใน Field1 ที่ขึ้นต้นด้วย *
  2. ffResetCountStarSubject : ใช้สำหรับ Reset ค่าเมื่อขึ้นหน้าใหม่
  3. ffSumStarSubjectCode : ใช้สำหรับเก็บค่าจำนวนรวมของ Field1 ที่ขึ้นต้นด้วย *
  4. ffPageFooter : ใช้สำหรับเก็บข้อความที่ต้องการให้แสดงท้ายกระดาษ

1. ffCountSubjectStar

WhilePrintingRecords;
Global numberVar
isStarSubjectCode;

if (Left({@Field1 },1) = “*”) then
isStarSubjectCode := 1
else isStarSubjectCode := 0

โค้ดส่วนนี้เป็นการตรวจสอบว่าถ้า Field1 นั้นมี * นำหน้า ให้เก็บค่านั้นไว้ในตัวแปร isStarSubjectCode โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ DetailSection เนื่องจากต้องมีการตรวจสอบข้อมูลทุก Record


2. ffResetCountStarSubject

WhilePrintingRecords;

Global numberVar isStarSubjectCode := 0;
Global numberVar countStarSubjectCode := 0;

โค้ดส่วนนี้เป็นส่วนที่ใช้สำหรับ Reset ค่าตัวแปร โดยกำหนดค่าเริ่มต้นให้ตัวแปร ให้เท่ากับ 0 โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ Page Header เนื่องจากต้องมีการตรวจสอบข้อมูลทุก Record


3. ffSumStarSubjectCode

whileprintingrecords; //ทำราย Rec ที่มีการพิมพ์
Global numberVar countStarSubjectCode;
Global numberVar isStarSubjectCode;

countStarSubjectCode := countStarSubjectCode + isStarSubjectCode

โค้ดส่วนนี้เป็นการนับจำนวน Field1 ที่มี * นำหน้า ให้เก็บผลรวมไว้ในตัวแปร countStarSubjectCode โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ DetailSection เนื่องจากต้องมีการตรวจสอบข้อมูลทุก Record


4. ffPageFooter

” มีข้อมูลที่มีเครื่องหมาย * นำหน้า”

เก็บข้อมูลที่ต้องการให้แสดงในส่วนของ PageFooter โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ PageFooterSection

ผู้เขียนหวังว่าบทความครั้งนี้จะเป็นประโยชน์ต่อผู้อ่านไม่มากก็น้อย แล้วพบกันใหม่ครั้งหน้าจ้าาาาา ^^