ผมใช้วิธีสร้าง Public Array Variable X ในโมดูล M เพื่อเก็บสถานะการเลือกเมื่อเปิดฟอร์ม F โดย X จะถูกกำหนดให้มีจำนวน element ทั้งหมดเท่ากับค่าสูงสุดของ ID แล้วเชื่อม check box (chkX) ที่ใช้แสดงสถานะการเลือกเข้ากับฟังก์ชั่น XStatus( ) ที่อ่านค่าจาก X อีกทีนึง
แต่เนื่องจาก check box นี้ผูกกับฟังก์ชั่น จึงทำได้แค่แสดง ไม่สามารถคลิกเปลี่ยนแปลงได้ จึงสร้าง combo box command button (btnX) เพื่อรองรับการคลิกเลือกเปลี่ยนสถานะแทน โดยกำหนดให้แสดงเป็นประเภทโปร่งใส (Transparent property = True) และวางขี่อยู่บน chkX เพื่อให้ผู้ใช้รู้สึกเหมือนใช้งาน chkX เท่านั้น เมื่อคลิกก็จะไปสลับค่าในตัวแปร X ตาม element ที่อ้างอิงด้วยค่า ID และอัพเดตการแสดงของ chkX อีกที และเมื่อจะนำการเลือกไปใช้ เช่นนำไปออกรายงาน ก็ให้กำหนดเงื่อนไขของคิวรี่หรือ Filter ของรายงานให้มีเงื่อนไข Xstatus(ID) = TRUE
ข้อดีคือ
- ไม่ต้องสร้างฟิลด์หรือเทเบิลชั่วคราวเพื่อเก็บสถานะการเลือก
ข้อด้อยคือ
- ใช้ได้กับฟอร์มที่มี ID เป็นตัวเลข
- ใช้ได้กับฟอร์มที่แสดงเพียงอย่างเดียว ถ้ามีการป้อนเรคอร์ดใหม่ลงในฟอร์มด้วย ต้องแก้ไขโปรแกรมเพิ่มเติม
- สถานะการเลือก ต้องใช้เวลานิดหน่อยในการแสดง ถ้าจำนวนบรรทัดยิ่งมาก อาจจะใช้เวลามากขึ้น
- ต้องเขียนโค้ดเพื่อจัดการ