กระทู้เก่าบอร์ด อ.Yeadram
2,985 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
รบกวนช่วยหน่อยครับ ผมทำอะไรไม่ถูกจริงๆ
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
2 @R02711
เริ่มจะมีข้อมูลในบอร์ดเยอะแล้วนะครับ
อย่างไร ลอง Search ดูก่อนนะครับ เจ้าตัว Google Search ที่เจ้าของ web เอามาติดไว้ให้ใช้การได้ดีเลย...
และจะช่วยให้ดีขึ้นอีก ถ้าช่วยตั้งหัวข้อกระทู้ที่สื่อความหมายได้เลย จะช่วยให้เพื่อนๆ คนอื่น search เจอได้เร็วขึ้น ไม่ต้องมาเสียเวลาพิมพ์อธิบายคำถามใหม่
อย่างไร ลอง 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
ลองดูแล้ว แต่ทำไม่ได้ครับ
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 สิครับ
เดี๋ยวจะมีคนมาช่วยแก้ให้
ทำ 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
ตัวแรกชื่อ 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
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
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 ยกเว้นคุณมีเหตุผลที่ดีรองรับ การมีซ้ำซ้อนก็ย่อมทำได้
สิ่งที่ควรบอกมาด้วยก็คือ แต่ละ 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 ได้เฉพาะตามเงื่อนไข
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 ได้เฉพาะตามเงื่อนไข
Time: 0.5317s
http://www.thai-access.com/yeadram_view.php?topic_id=105
http://www.thai-access.com/yeadram_view.php?topic_id=108