กระทู้เก่าบอร์ด อ.Yeadram
1,748 5
URL.หัวข้อ /
URL
การเลือกใช้งาน listbox และ subform ย่อย
เรียนถามอาจารย์ และ ผู้เชี่ยวชาญครับ
คือผมทำฐานข้อมูลโครงการอบรมของหน่วยงานครับ ตอนนี้ก็เสร็จไปกว่า70% ละ แต่ติดปัญหาครับ ดังภาพ
ในหน้านี้จะเป็นหน้าบันทึกชื่อวิทยากร และ ผู้เข้าร่วมอบรมโครงการ ลงในข้อมูลโครงการอบรมครับ
กรอบสีขาว - คือชื่อโครงการต่าง ๆ เมื่อคลิกก็จะแสดงชื่อวิทยากรและผู้เข้าร่วมอบรมที่กรอบสีเหลืองซ้ายและสีเทาซ้าย
กรอบสีเหลืองซ้ายและขวา - เมื่อเปิดโครงการใหม่ กรอบเหลืองซ้ายจะเป็นค่าว่าง ซึ่งจะต้องเลือกข้อมูลวิทยากรจากกรอบสีเหลืองขวามาใส่ (ลักษณะคือดับเบิ้ลคลิกชื่อที่ด้านขวาและปรากฏที่ด้านซ้าย)
กรอบสีเทาซ้ายและขวา - เมื่อเปิดโครงการใหม่ กรอบเทาซ้ายจะเป็นค่าว่าง เมื่อต้องการเพิ่มข้อมูลผู้เข้าร่วมอบรมจะข้อมูลจากกรอบเทาขวามาใส่ (ลักษณะคือดับเบิ้ลคลิกชื่อที่ด้านขวาและปรากฏที่ด้านซ้าย)
ซึ่งผมยังคิดไม่ออกว่าควรใช้เครื่องมือตัวไหนดีจึงจะเหมาะสมกับระบบนี้
ตอนนี้คิดไว้แค่ใช้ List Box ทั้งซ้ายและขวา แสดงรายชื่อวิทยากรและผู้เข้าร่วมอมรม และส่งข้อมูลไป
หรือใช้ Subform ดึงฟอร์มมาทั้งฟอร์มเป็น Subform ย่อย ทั้งซ้ายและขวา เมื่อคลิกที่ Subform ขวา ก็ส่งข้อมูลไปที่ Subform ซ้าย (อันนี้ผมว่าแปลก ๆ เพราะส่งค่าข้ามฟอร์มเลย)
จึงอยากขอคำแนะนำจากทุก ๆ ท่านว่าใช้ตัวไหนดี หรือถ้ามีเทคนิคอื่น ๆ ที่ดีกว่าก็ได้ครับ
และสุดท้าย ผมเขียนโค้ดส่งค่าไม่เป็นใน Access เคยเขียนแต่ VB ที่ใช้ Datagridview รบกวนขอโค้ดตัวอย่าง หรือคำแนะนำด้วยครับ
ขอบคุณมาก ๆ ครับ
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R20980
ขอบคุณมาก ๆ ครับ ขอถามอีกคำถามครับ
แล้วเวลาบันทึกข้อมูลที่อยู่ใน List box ใส่ในตารางควรเขียนโค้ดยังไงครับ หากพิมพ์ตัวอย่างได้ดีมาก ๆ เลยครับ
ขอบคุณมาก ๆ ครับ ^^
แล้วเวลาบันทึกข้อมูลที่อยู่ใน List box ใส่ในตารางควรเขียนโค้ดยังไงครับ หากพิมพ์ตัวอย่างได้ดีมาก ๆ เลยครับ
ขอบคุณมาก ๆ ครับ ^^
3 @R20981
จะเขียนเป็น SQL INSERT statement (ลองหาจากกระทู้เก่าด้วยคำว่า INSERT INTO) หรือจะเรียกใช้ method ผ่าน Data Access Object ที่มีอยู่ 2 ตัว ตัวนึงคือ DAO อีกตัวคือ ADODB (หาจากกระทู้เก่าด้วยคำว่า Append) ตัวไหนก็ได้ แล้วแต่ถนัดครับ
4 @R20982
แก้ไข : ไม่ใช่ Append นะครับ ที่ถูกต้องคือ AddNew
5 @R21393
เดิมใช้Access2000 ใน Windows Me พอย้ายไปเครื่องใหม่เป็นAccess2010 Windows 8.1 Enterprise เรียกโปรแกรมให้ทำงาน มันไม่ทำงานตามที่เราผูกการทำงานไว้ที่Event ลอง Debug ดูตามEvent มันก็ไม่เข้าไปทำงาน เป็นเหมือนกันทั้งก่อนและหลังทำการแปลงจาก.mdb ตกเป็น.accdb เป็นเพราะอะไร และแก้ไขอย่างไรดีคะ
Time: 0.3032s
- Row Source property ของ listboxกรอบเหลืองขวา ให้มีค่าเป็น SQL SELECT statement ที่เลือกแสดงเฉพาะวิทยากรที่ยังไม่ได้ถูกเลือกสำหรับโครงการนั้นๆ SQL ก็มีลักษณะเป็น select .. from เทเบิลของกรอบเหลืองขวา as A left join เทเบิลของกรอบเหลืองซ้าย as B on A.วิทยากร = B.วิทยากร where B.โครงการ = โครงการที่เลือก and B.วิทยากร is null ค่า Row Source นี้จะต้องถูกกำหนดใหม่ทุกครั้งที่มีการเลือกโครงการในกรอบขาว หรือเมื่อมีการเลือกวิทยากรในกรอบเหลืองขวา หรือเมื่อยกเลิกวิทยากรในกรอบเหลืองซ้าย
- Row Source property ของ listbox กรอบเหลืองซ้าย ก็กำหนดเป็น SQL SELECT statement คล้ายๆกัน และถูก requery ใหม่ทุกครั้งที่มีการเพิ่มหรือลดวิทยากรหรือเปลี่ยนโครงการ
- เมื่อเลือกวิทยากรในกรอบเหลืองขวาแล้ว ก็เขียนเรคอร์ดลงในเทเบิลของกรอบเหลืองซ้าย
- เมื่อลดวิทยากรในกรอบเหลืองซ้ายแล้ว ก็ลบเรคอร์ดลงในเทเบิลของกรอบเหลืองซ้ายออกไป
- การใส่ row source ก็ใช้คำสั่ง listbox.rowsource = "....คำสั่ง SQL SLECT statement..."
- การ requery ให้ใช้คำสั่ง listbox.requery
- การดูว่า listbox ที่เลือกคือค่าอะไร ให้เรียก listbox เฉยๆ หากมีหลายคอลัมน์ใน listbox สามารถเขียน listbox.column(N) เพื่ออ่านค่าของคอลัมน์ที่ต้องการ โดยที่ N = เลขที่คอลัมน์ (ซึ่งเริ่มจากศูนย์)
- event ที่ใช้สำหรับการเลือกหรือไม่เลือกของ listbox ก็ใช้ Double Click event น่าจะเหมาะสม หรือถ้าจะเอาสะดวกกว่านี้ จะใช้ Click event ธรรมดาๆก็ได้
- กรอบเทาก็ทำเหมือนกรอบเหลืองแหล่ะครับ