[Report] Logic ผิด หรือเราไม่รู้ การทำงานของมัน

วันนี้ได้ไปช่วยพี่ที่ทำงานมา ซึ่งตัวรายงานมี Layout ดังนี้ (ขอเบลอรูปนิดนึง 55) โดยโจทย์มีอยู่ว่า ชื่อของรายงาน @ReportName(หมายเลข 1 ในรูป) ขึ้นอยู่ผลรวม(SUM) ของ field #SumNetAmountGrandTotal(หมายเลข 2 ในรูป) โดยมีเงื่อนไข ดังนี้ ซึ่งในตัว Crystal Report เราสามารถเขียน formula เพื่อกำหนดการแสดงผลได้ ดังนี้ แต่เมื่อลองรัน Application และแสดงรายงานดูปรากฏว่า เงื่อนไขที่ได้กำหนดไว้ ไม่ทำงาน แล้วสาเหตุ คือ อะไร ? ลองกลับมาดูการทำงานของ Report กัน ตัว Crystal Report มีการ Render เหมือน Printer หรือถ้าในภาษาขอ Programming คือ Interpreter นี้แหละ เมื่อเรารู้ Consept การทำงานของการสร้าง Report แล้ว วกกลับมาดูที่ Layout ของ Report พบว่าส่วนของ @ReportName(หมายเลข 1 ในรูป) ถูกทำงานก่อนที่ระบบหาค่า #SumNetAmountGrandTotal(หมายเลข 2 ในรูป) ที่ถูกรวม (SUM) ก่อนอีก ? รู้สาเหตุแล้ว แก้ปัญหาอย่างไร ? เมื่อเข้าใจการทำงานของ Report ที่ทำงานจากบนลงล่างแบบ printer ดังนั้น วิธีแก้ คือ ต้องหาผลรวม(SUM) field #SumNetAmountGrandTotal ก่อนเข้าเงื่อนไข โดยแก้ไข formula ดังนี้ หมายเหตุ: จริงๆวิธีแก้ไขกับปัญหานี้มีได้หลายแบบ แต่ที่ผู้เขียนได้ยกตัวอย่างมา เพื่อให้ผู้อ่านได้เข้าใจ Consept การทำงานของ Report Writer แบบต่างๆ ซึ่งไม่จำเป็นต้องเป็น Crystal Report อย่างเดียวครับ…







