ผมต้องการทำ check box ให้เลือกได้หลายค่า
กระทู้เก่าบอร์ด อ.Yeadram

 3,858   1
URL.หัวข้อ / URL
ผมต้องการทำ check box ให้เลือกได้หลายค่า

ผมต้องการทำ check box ให้เลือกได้หลายค่าแล้วเก็บมาในที่เดียวกันโดยมี , คั้นไว้ครับ

ตอนนี้ทำได้โดยทำด้วย กลุ่มตัวเลือก แต่มันเลือกได้ค่าเดียวเอง ทำยังไงให้มันได้หลายค่าอะครับผม

1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R15858
ไฟล์ฟอร์แมทของ Access ตั้งแต่เวอร์ชั่น 2007 ขึ้นไป มีความสามารถให้ฟิลด์นึงเก็บค่าได้หลายค่า ซึ่งเรียกว่า Multivalued Field อ่านรายละเอียดได้จาก http://office.microsoft.com/en-us/access-help/add-or-change-a-lookup-column-that-lets-you-store-multiple-values-HA010014098.aspx?CTT=5&origin=HA001233722#BM3

แต่ถ้าเป็นผม ผมจะไม่ใช้ เพราะมันขัดแย้งกับทฤษฏีทางฐานข้อมูลที่ว่า ในเรคคอร์ดหนึ่งๆ ฟิลด์เดียวต้องมีได้แค่ค่าเดียวเท่านั้น ซึ่งต่อไปอาจมีปัญหาได้เมื่อนำไปใช้ ดังนั้นวิธีที่ผมใช้ก็คือ เราไม่เก็บ , เอาไว้ แต่เราจะเก็บเป็นค่าผลรวมของ 2 ยกกำลัง n (n=0,1,2,...) ซึ่งจะเป็นตัวสะท้อนบอกว่า CheckBox ใดบ้างที่เลือกหรือไม่เลือกไว้

- โดยเราไม่ต้องวาง CheckBox ลงใน OptionBox (เท่าที่อ่าน เหมือนว่าคุณจะทำอย่างนั้น)

- ค่าที่จะเก็บลงในฐานข้อมูลหรือตัวแปร จะหาได้จากผลรวมของค่าที่กำหนดในทางตรรกกะให้แก่แต่ละ CheckBox โดยที่ CheckBox ตัวแรก (CheckBox1) ถือว่ามีค่าเป็น 2ยกกำลัง0 คือ 1, ตัวที่ 2 เป็น 2ยกกำลัง1 คือ 2 , ตัวที่ 3 เป็น 2ยกกำลัง2 คือ 4, ...คือ 8, ...คือ 16, ...

- คำสั่งหาผลรวม (ในตัวแปร sum) คือ

dim sum as integer

if CheckBox1 then sum = sum Or 1
if CheckBox2 then sum = sum Or 2
if CheckBox3 then sum = sum Or 4
if CheckBox4 then sum = sum Or 8
...
...
...

หมายเหตุ :
1. ชื่อของ CheckBox ไปแก้ให้ตรงตามที่คุณตั้งไว้ด้วย
2. เราใช้ประเภทข้อมูล Integer เมื่อ CheckBox มีไม่เกิน 16 ตัว และจะใช้ Long เมื่อมีไม่เกิน 32 ตัว

- เอาค่า sum ไปเก็บลงฟิลด์ตามต้องการ

- เวลาผันค่ากลับมา ก็ใช้คำสั่งนี้
CheckBox1 = ((sum And 1) = 1)
CheckBox2 = ((sum And 2) = 2)
CheckBox3 = ((sum And 4) = 4)
CheckBox4 = ((sum And 8) = 8)
...
...
...

ลองศึกษาดูครับ ว่าผลของการ Or เมื่อเลือก CheckBox แต่ละตัว จะมีค่าเป็นเท่าไหร่ และเมื่อผันกลับมาแล้ว จะสามารถบอกได้ว่า CheckBox ใดได้ถูกเลือกหรือไม่เลือกเอาไว้จริงหรือไม่
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3903s