พบปัญหาหลังจากใช้ select ....From....where
กระทู้เก่าบอร์ด อ.Yeadram

 1,281   6
URL.หัวข้อ / URL
พบปัญหาหลังจากใช้ select ....From....where

พบปัญหาหลังจากใช้ Select ....From....Where

Private Sub cmbID_Off_Change()
cmbID_SubOff.RowSource = "SELECT Office_Sub.ID_Div, Office_Sub.Division FROM Office_Sub Where Office_Sub.[ID_Off] = " & cmbID_Off.Column(0)
cmbID_SubOff.Requery
End Sub

คือสามารถเลือกรายการใน cmbID_SubOff ได้ตามเงื่อนไขเมื่อทำ record ใหม่ แต่ไม่สามารถถอยกลับไปดูข้อมูลใน record เก่าได้ คือ ที่ cmbID_SubOff จะแสดงเป็นค่าว่างบน Form แต่มีการเก็บข้อมูลไปที่ Table แล้ว ไม่ทราบว่าจะต้องทำยังงัยถึงสามารถมองเห็นค่าใน record เก่าได้บน Form

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

1 @R14855
เดาว่าปัญหาเกิดจากการอ้างถึง cmbId_SubOff ที่อาจจะเป็น unbound (ไม่ได้กำหนด control source เข้ากับ field)
ทางแก้มีหลายทางครับ แต่ขอตอบเมื่อทราบข้อมูลมากกว่านี้ครับ
2 @R14866
test reply
3 @R14868
combo ชื่อ cmbID_Off
- กำหนด rowsource type เป็น Table ชื่อ Office_Main (ID_Off, NameOff)
- กำหนดจำนวนคอลัมภ์ เป็น 2
- กำหนดความกว้างคอลัมภ์ เป็น 0;10   (มองเห็นเฉพาะชื่อหน่วยงานหลัก แต่เก็บข้อมูลรหัสหน่วยงานหลัก)
- กำหนด even on change ดังนี้
Private Sub cmbID_Off_Change()
cmbID_SubOff.RowSource = "SELECT Office_Sub.ID_Div, Office_Sub.Division FROM Office_Sub Where Office_Sub.[ID_Off] = " & cmbID_Off.Column(0)
cmbID_SubOff.Requery
End Sub
เพื่อให้เมื่อเลือกรหัสหน่วยงานหลักแล้ว เวลาไปเลือกรหัสหน่วยงานย่อย จะได้ดึงข้อมูลเฉพาะหน่วยงานย่อยที่อยู่ภายใต้หน่วยงานหลักค่ะ

combo ชื่อ cmbID_SubOff เป็นหน่วยงานย่อยภายใต้หน่วยงานหลัก
- กำหนด rowsource type เป็น Table ชื่อ Office_Sub (ID_Off, ID_Div,Division)
- กำหนดจำนวนคอลัมภ์ เป็น 3
- กำหนดความกว้างคอลัมภ์ เป็น 0cm;8cm;0cm   

ซึ่งเมื่อทำรายการใหม่จะสามารถใช้ combo เลือกหน่วยงานย่อยได้ตามที่กำหนด แต่เมื่อย้อยกลับไปดู record ก่อนหน้า ปรากฎว่ามันไม่แสดงค่าที่ combo หน่วยงานย่อย แต่เมื่อไปดูที่ Table ก็พบว่ามีการจัดเก็บค่าไว้แล้ว

ไม่ทราบว่าข้อมูลเท่านี้เพียงพอไหมคะ
4 @R14875
เดาว่าแสดง Form แบบ Continous ใช่ใหมครับ
และวาง ทั้ง2 combo ไว้ใน detail
ทีนี้เวลาให้ Combo ที่ 2 อ้าง where ถึงข้อมูล combo ที่ 1
ถ้า where แล้วไม่มีข้อมูล combo ก็จะแสดงค่าว่าง คือที่จริงมีข้อมูล แต่ด้วยลักษณะของ combo จะแสดงข้อมูลตาม row source เมื่อมีไม่ตรงกันก็แสดงไม่ได้

ทางแก้ที่(น่าจะ)ง่ายที่สุดคือ แยกการบันทึกข้อมูล(add/edit) ออกจากการแสดงผล
โดยที่ส่วนแสดงผลใช้ให้ query เชื่อมข้อมูลที่ต้องการแสดงให้เรียบร้อย
ส่วนการบันทึกข้อมูลก็สามารถใช้ combo เหมือนเดิมได้
5 @R14917
เรียนอาจารย์ PichaiTC
ก่อนอื่นต้องขอโทษด้วยค่ะ ที่หายไปหลายวัน แต่ก็พยายาม reply หลายครั้งแล้ว เมื่อกดปุ่ม Post ทุกครั้ง ระบบก็จะกลับไปที่หน้าเดิม
วันนี้ก็ลุ้นอีกครั้งว่าจะ reply สำเร็จหรือไม่

คืออยากทราบว่าข้อมูลที่ให้ไว้ เพียงพอให้อาจารย์วิเคราะห์หรือไม่ ถ้าไม่พอต้องการข้อมูลอะไรเพิ่มบ้าว

ส่วนการแยกการบันทึกข้อมูลที่อาจารย์ว่า ต้องทำอย่างไรบ้างคะ พอจะอธิบายคร่าวได้หรือไม่ ไม่เคยทำแบบแยกมาก่อนเลยค่ะ

ขอบคุณมากค่ะ
6 @R14997
ข้อมูลที่ให้ไม่ตรงประเด็นที่จะทราบต้นเหตุแห่งปัญหา สิางทึ่ต้องการ(เบื้องต้น)ทราบอยู่ในประโยคที่ว่า "ผมเดาว่า..."

ส่วนการแยก ส่วนบันทึกข้อมูลก็คือ
ข้อมูลที่คุณนำมาแสดงเกิดจากการ query มา ซึ่งมันก็จะมีข้อจำกัดในการแสดงผล หรือบันทึกผลบางอย่าง เช่น อาจจะขัดแย้งกับข้อมูลใน combo box - ฉะนั้น ก็ให้มันทำหน้าทึ่แสดงผลอย่างเดียว อย่าให่มันทำหน้าที่ เพิ่ม หรือ แก้ไขข้อมูล
ทีนี้ก็ต้องสร้างส่วนบันทึกข้อมูลขึ้นมาเพื่อทำหน้าที่นั้นแทน
ซึ่งทำได้หลายรูปแบบเช่น
- วาง control อีกหนึ่งชุด ที่ header หรือ footer
- วางใน form ใหม่
โดยจะเชื่อมโยงข้อมูลหรือไม่ ก็แล้วแต่วิธีการที่จะเลือกใช้ (code มากน้อยต่างกันไป)
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2833s