ขอความช่วยเหลือ เพกี่ยวกับ Access ครับ
กระทู้เก่าบอร์ด อ.Yeadram

 2,917   9
URL.หัวข้อ / URL
ขอความช่วยเหลือ เพกี่ยวกับ Access ครับ

ผมต้องการสร้าง from ที่มี Combo box 2 อัน ครับ
combo อันที่1 เป็น brandname   อันที่2 เป็น Model
โดยมีเงื่อนไขว่า ต้องเลือก combo box1 ก่อน แล้ว combo box2 จะโชว์ข้อมูล โดยแสดง ข้อมูลเฉพาะ ข้อมูลที่อยู่ภายใต้ เงื่อนไขของcombo box1 เท่านั้น งงป่ะ

ในช่อง brandname จะมี
1.Acer
2.Dell
3.Noname
ในช่อง Model จะมี
1.s285
2.M460
3.optiplex360

ถ้าCombo box1เลือก acer combo box2 จะโชว์ s285+m460
ถ้าCombo box1เลือก dell combo box2 จะโชว์ optiplex360
แต่ถ้าCombo box1เลือก Noname ใน combo box2 จะเป็นสีเทา แล้วทำอะไร ไม่ได้
โดยอ้างอิง มาจาก ตาราง 2ตาราง
ตารางที่1 ชื่อ Brandname รายละเอียดดังนี้
ID     Brand_name
1     Acer
2     Dell
3     NoName

ตารางที่2 ชื่อ Brand_model รายละเอียดดังนี้
ID     Brand_name     Model
1     Acer                      S286
2     Acer                      M460
3     Dell                  Optiplex360
4     NoName     
รบกวนช่วยหน่อยครับ ผมทำอะไรไม่ถูกจริงๆ

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

1 @R02710
คำถามประเภทนี้มีคนตอบแล้วนะครับ ลองไปดูที่นี่

http://www.thai-access.com/yeadram_view.php?topic_id=105

http://www.thai-access.com/yeadram_view.php?topic_id=108
2 @R02711
เริ่มจะมีข้อมูลในบอร์ดเยอะแล้วนะครับ
อย่างไร ลอง Search ดูก่อนนะครับ เจ้าตัว Google Search ที่เจ้าของ web เอามาติดไว้ให้ใช้การได้ดีเลย...

และจะช่วยให้ดีขึ้นอีก ถ้าช่วยตั้งหัวข้อกระทู้ที่สื่อความหมายได้เลย จะช่วยให้เพื่อนๆ คนอื่น search เจอได้เร็วขึ้น ไม่ต้องมาเสียเวลาพิมพ์อธิบายคำถามใหม่
3 @R02713
คำถามประเภทนี้มีคนตอบแล้วนะครับ ลองไปดูที่นี่

http://www.thai-access.com/yeadram_view.php?topic_id=105

http://www.thai-access.com/yeadram_view.php?topic_id=108

ลองดูแล้ว แต่ทำไม่ได้ครับ
4 @R02716
ทำอะไรตรงไหนไม่ได้หละครับ
ทำ combobox เป็นใช่ไหมครับ
สร้าง combobox ขึ้นมา 2 อันเป็นใช่ไหมครับ (หรือทำไม่เป็น)
หลักสำคัญจะอยู่ที่ rowsource
ลองสร้าง combobox ของคุณขึ้นมาแล้ว เอา rowsource มา post สิครับ
เดี๋ยวจะมีคนมาช่วยแก้ให้
5 @R02738
ผมสร้าง combo box ขึ้นมา2ตัว
ตัวแรกชื่อ cbobrand_name โดยดึงข้อมูล จาก
table ชื่อ Brand_name    รายละเอียดดังนี้
Brand_nameID     Brand_name
1                             Acer
2                               Dell
3                            NoName
ตัวที่2ชื้อ cbomodel โดยดึงข้อมูล จาก ชื่อ Table_Model รายละเอียดดังนี้
ID     Brand_name     Model
1     Acer                      S286
2     Acer                      M460
3     Dell                  Optiplex360
4     NoName      

ผมสร้างเงื่อนไขแบบนี้ ถูกมั้ยครับ แต่ผมลองแล้วใช้ไม่ได้ ต้องแก้ตรงไหน บอกหน่อยครับ

Private Sub cboBrand_Name_Afterupdate()
    If Not IsNull(cboBran_dname.Value) Then
        Dim sqlBrand_Name As String
        sqlBrand_Name = "Select * From Table_Model " & _
          "Where Brand_Name = '" & cboBrand_name & "' " & _
          "ORDER BY ModelID;"
          cboModel.RowSource = sqlBrand_Name
    Else
          sqlBrand_Name = ""
          cboModel.RowSource = sqlBrand_Name
    End If
End Sub
6 @R02739
Private Sub cboBrand_Name_Afterupdate()
    If Not IsNull(cboBrand_name.Value) Then
        Dim sqlBrand_Name As String
        sqlBrand_Name = "Select * From Table_Model " & _
          "Where Brand_Name = '" & cboBrand_name & "' " & _
          "ORDER BY ModelID;"
          cboModel.RowSource = sqlBrand_Name
    Else
          sqlBrand_Name = ""
          cboModel.RowSource = sqlBrand_Name
    End If
End Sub
7 @R02742
    Else
          cboModel.RowSource = ""
    End If
cboModel.Requery
End Sub
8 @R02744
อาชีพโปรแกรมเมอร์ ต้องพยายามเพาะบ่มอาศัยตรรกะให้มากๆนะครับ คำว่า "แต่ผมลองแล้วใช้ไม่ได้" มันลอยๆ ไม่ได้บอกอะไรที่เป็นประโยชน์ต่อการแก้ไขได้เลย ช่วยขยายความด้วยว่าไม่ได้อย่างไร เกิด error message มีข้อความว่าอะไรหรือไม่ด้วยครับ

สิ่งที่ควรบอกมาด้วยก็คือ แต่ละ combo box มีค่าอะไรใน property เหล่านี้ : Format, CoulmnCount, ColumnWidth, BoundColumn, ControlSource, RowSourceType และ RowSource

ปล. Table_Model ไม่ควรมีคอลัมน์ Brand_Name ครับ มันซ้ำซ้อนกับเทเบิล Brand_Name ครับ โดยพื้นฐานแล้ว มันไม่ Normalize   ยกเว้นคุณมีเหตุผลที่ดีรองรับ การมีซ้ำซ้อนก็ย่อมทำได้
9 @R02745
จากตารางของคุณถ้ายืนยันการออกแบบเดิม หมายถึงในตาราง Brand Model
field ชื่อ Brand_Nameไม่เปลี่ยนเป็น id ของ ตาราง Brand_name ก็สามารถทำได้ดังนี้
1.สร้างcombo box สมมติชื่อ comBrand จากตาราง Brand_name
2 สร้าง text box ขึ้นมา    สมมติให้ชื่อ   txtbrand เพื่อรับข้อมูลจากข้อ 1   
   ในtext box เขียน =comBrand.column(1)
   เพื่อนำไปอ้างอิงในตารางที่ 2
3. บันทึกฟอร์มดังกล่าว สมมติให้ชื่อ frmBrand ชื่อไว้สำหรับอ้างอิง ในcombo ตัวที่2 จากตารางBrand_Model
4.สร้างcomboที่2 จากตาราง Brand_Model เลือกข้อมูลมาทั้งหมด (ผมไม่สนใจว่าชื่ออะไร)
5.ดูคุณสมบัติของcomboจากตาราง Brand_Model ดังนี้
- ความกว้างของคอลัมภ์   0ซม.;0ซม.;2.542ซม. เน้นตัวที่ 2 ในเป็น 0(หมายถึง fieldชื่อสินค้า)
   -เลือก data แหล่งข้อมูลแถว คลิกเข้าไปรูปร่างQuery ในช่อง Brand_name
     เงื่อนไข เขียน forms!frmBrand!txtBrand (เงื่อนไขนี้มาจากข้อ2)
-จากนั้นกากบาท Query ทั้งกล่าวตอบใช่
6.กลับมาที่ comBrand (comboจากตารางBrand_name) เลือก event ให้ refresh
     Private Sub comBrand_AfterUpdate()
     Me.Refresh
     End Sub
7.และทำ comboจากตาราง Brand_Model เหมือนกับข้อ 6
เท่านี้ท่านก็สามารถเลือก Brand_nameแล้ว Brand_Model ได้เฉพาะตามเงื่อนไข
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2828s