กระทู้เก่าบอร์ด อ.Yeadram
2,399 5
URL.หัวข้อ /
URL
ทำอย่างไรให้ combobox link กัน(ช่วยหน่อยนะค่ะเพิ่
ต้องการให้ combobox ที่ช่อง ปี link กับ combobox ที่ช่อง รายการอุปกรณ์
ขั้นตอนการทำงาน
- เลือกปี เลขที่สัญญาของปีนั้นก็จะ popup ที่ ช่องเลขที่สัญญา(1ปี มี 1สัญญา)
- เลือกรายการที่จะทำการเช่าโดยคลิกเลือกที่ conbobox ช่องรายการอุปกรณ์(หนึ่งสัญญา มีหลายอุปกรณ์)
*** ต้องการให้ที่ช่องรายการอุปกรณ์ มีข้อมูลเฉพาะรายการอุปกรณ์ของเลขที่สัญญาที่เลือก (ต้องทำอย่างไรช่วยแนะนำหน่อยนะค่ะ)***
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R07224
ลองหาดูแล้ว แต่นำมาดัดแปลงใช้ไม่ได้ค่ะ ยังไม่มีความรู้เรื่อง access ด้วย เพิ่งเริ่มหัดทำ เลยดูไม่รู้เรื่องจริงๆค่ะ ขอบคุณที่ช่วยนะค่ะ
3 @R07228
มันต้องอ้างอิงหลายอย่างครับ กรณีทีคุณเป็นมือใหม่จริงๆ จะบอกเฉพาะสัญลักษณ์หรือ ชนิดออบเจคไป คงจะเข้าใจได้ยาก แต่ก็ต้องพยายามทำความเข้าใจครับ เพราะวิธีนี้คือวิธีที่ดีที่สุด (เพราะถ้าว่าตามโบราณ อันนี้คือวิธีสอนให้คุณเลี้ยงปลาและสอนให้คุณจับปลา)
อีกทางเลือกคือ คุณต้องบอกสิ่งที่ ผมต้องการมา แล้วจะแนะให้ ซึ่งมันจะง่ายขึ้นมาหน่อยตรงที่ เราเข้าใจตรงกันในเรื่องของ ชื่อออบเจคต่างๆ เช่น ชื่อตารางต้นทาง ชื่อคอมโบ ชื่อฟิลด์ที่เกี่ยวข้อง (อันนี้ถ้าว่าตามโบราณ เรียกว่า สอนให้คุณขอดเกล็ดปลา สอนให้คุณหมักปลา สอนให้คุณปรุงปลาเป็นอาหาร)
และทางเลือกสุดท้าย คือ ส่งตัวอย่างของคุณมาให้ผู้รู้ท่านอื่นๆ แก้ให้เลย (อันนี้ ไม่แนะนำ เพราะเป็นการสร้างความคุ้นชิน ท?่ไม่ถูกต้อง (โบราณเทียบว่า เหมือนกับยกถ้วยแกงปลามาถึงปาก ถ้าครั้งต่อไปคุณอยากปลาอีก แต่ไม่มีคนหาให้ คนปรุงให้ คุณก็จะลำบาก)
เอ๊ะผม พล่ามอะไรมาเนี่ย อิอิ (โปรดอย่าถือสา ผมแก่แล้ว หัวโบราณไปหน่อย และที่สำคัญคืนนี้เริ่มกรึ่มๆ ไปแล้ว อิอิ)
เอาเป็นว่า ลองให้ผมอธิบายในสไตล์วิธีแรกก่อนก็แล้วกันดูว่าคุณตามมันทันไหมนะครับ ต้องลองก่อน
-โดยปกติแล้ว คอมโบอุปกรณ์ ต้องมีแหล่งข้อมูลซึ่งคุณอาจจะใส่ค่าให้มันไปแล้วในขณะออกแบบ
..แต่เราสามารถเปลี่ยนมันได้ด้วยโค้ด VBA
-และเราจะให้โค้ด VBA ทำงานในเมื่อใดดีล่ะ
..ก็ตอนที่มีการเลือกข้อมูลในคอมโบปีไงครับ เราเรียกสิ่งเหล่านี้ว่า "เหตุการณ์" หรือ Event นั่นก็คือ "เหตุการณ์เมื่อคอมโบปีถูกเลือก" (combo1_onChange)
-แล้วโค้ดล่ะ มันจะออกมาแนวไหน
..ก็คือชุดคำสั่งที่จะสั่งให้เปลี่ยน "แหล่งข้อมูลของคอมโบอุปกรณ์" (combo2.Rowsource)
-แหล่งข้อมูลของคอมโบอุปกรณ์สามารถเป็นอะไรได้บ้าง
..ก็เช่น ชื่อตาราง, ชื่อคิวรี่, หรือ SQL Statement แบบ Select โดยมีเงื่อนไข
มาลองดูกัน
- เปิดฟอร์มในมุมมองออกแบบ เปิด dialog properties ของคอมโบปี (combo1) ไปที่แท็บ Event เลื่อกเหตุการณ์ onchange (เมื่อเปลี่ยนแปลง) เลือกคือว่า Event Procedure แล้วคลิ๊กปุ่ม ... ข้างหลังรายการนั้น มันจะเปิดหน้าต่าง VBA มาให้ พร้อมกับอย่างน้อยสองบรรทัด
Private Sub Combo1_onchange()
End sub
เราก็แทรกโค้ดในระหว่างนั้น เพื่อเขียนเป็นชุดคำสั่ง
Private Sub Combo1_onchange()
combo2.rowsource = "Select [อุปกรณ์] from table1 where table1.[เลขที่สัญญา] Like '" & textboxเลขที่สัญญา & "' AND table1.[ปี] = " & combo1
combo2.requery
End sub
อีกทางเลือกคือ คุณต้องบอกสิ่งที่ ผมต้องการมา แล้วจะแนะให้ ซึ่งมันจะง่ายขึ้นมาหน่อยตรงที่ เราเข้าใจตรงกันในเรื่องของ ชื่อออบเจคต่างๆ เช่น ชื่อตารางต้นทาง ชื่อคอมโบ ชื่อฟิลด์ที่เกี่ยวข้อง (อันนี้ถ้าว่าตามโบราณ เรียกว่า สอนให้คุณขอดเกล็ดปลา สอนให้คุณหมักปลา สอนให้คุณปรุงปลาเป็นอาหาร)
และทางเลือกสุดท้าย คือ ส่งตัวอย่างของคุณมาให้ผู้รู้ท่านอื่นๆ แก้ให้เลย (อันนี้ ไม่แนะนำ เพราะเป็นการสร้างความคุ้นชิน ท?่ไม่ถูกต้อง (โบราณเทียบว่า เหมือนกับยกถ้วยแกงปลามาถึงปาก ถ้าครั้งต่อไปคุณอยากปลาอีก แต่ไม่มีคนหาให้ คนปรุงให้ คุณก็จะลำบาก)
เอ๊ะผม พล่ามอะไรมาเนี่ย อิอิ (โปรดอย่าถือสา ผมแก่แล้ว หัวโบราณไปหน่อย และที่สำคัญคืนนี้เริ่มกรึ่มๆ ไปแล้ว อิอิ)
เอาเป็นว่า ลองให้ผมอธิบายในสไตล์วิธีแรกก่อนก็แล้วกันดูว่าคุณตามมันทันไหมนะครับ ต้องลองก่อน
-โดยปกติแล้ว คอมโบอุปกรณ์ ต้องมีแหล่งข้อมูลซึ่งคุณอาจจะใส่ค่าให้มันไปแล้วในขณะออกแบบ
..แต่เราสามารถเปลี่ยนมันได้ด้วยโค้ด VBA
-และเราจะให้โค้ด VBA ทำงานในเมื่อใดดีล่ะ
..ก็ตอนที่มีการเลือกข้อมูลในคอมโบปีไงครับ เราเรียกสิ่งเหล่านี้ว่า "เหตุการณ์" หรือ Event นั่นก็คือ "เหตุการณ์เมื่อคอมโบปีถูกเลือก" (combo1_onChange)
-แล้วโค้ดล่ะ มันจะออกมาแนวไหน
..ก็คือชุดคำสั่งที่จะสั่งให้เปลี่ยน "แหล่งข้อมูลของคอมโบอุปกรณ์" (combo2.Rowsource)
-แหล่งข้อมูลของคอมโบอุปกรณ์สามารถเป็นอะไรได้บ้าง
..ก็เช่น ชื่อตาราง, ชื่อคิวรี่, หรือ SQL Statement แบบ Select โดยมีเงื่อนไข
มาลองดูกัน
- เปิดฟอร์มในมุมมองออกแบบ เปิด dialog properties ของคอมโบปี (combo1) ไปที่แท็บ Event เลื่อกเหตุการณ์ onchange (เมื่อเปลี่ยนแปลง) เลือกคือว่า Event Procedure แล้วคลิ๊กปุ่ม ... ข้างหลังรายการนั้น มันจะเปิดหน้าต่าง VBA มาให้ พร้อมกับอย่างน้อยสองบรรทัด
Private Sub Combo1_onchange()
End sub
เราก็แทรกโค้ดในระหว่างนั้น เพื่อเขียนเป็นชุดคำสั่ง
Private Sub Combo1_onchange()
combo2.rowsource = "Select [อุปกรณ์] from table1 where table1.[เลขที่สัญญา] Like '" & textboxเลขที่สัญญา & "' AND table1.[ปี] = " & combo1
combo2.requery
End sub
4 @R07241
ลองแล้วค่ะแต่ยังไม่ได้เลยหรือเพราะในที่นี้ใช้2 ตาราง
ปี(cboContractExpense) = Fildชื่อ ID_Contract ที่ตารางTable_Equipment
เลขที่สัญญา = Fildชื่อ Contract_No ที่ตาราง Table_Contract_Info
รายการอุปกรณ์(cboSpeccification) = Fildชื่อ Equipment_type ที่ตาราง Table_Equipment
ราคาต่อเดือน = Fildชื่อ Price_Per_Month ที่ตาราง Table_Equipment
เขียน code แบบนี้ค่ะ
Private Sub cboContractExpense_onchange()
cboSpeccification.RowSource = "Select Equipment_type FROM Table_Contract_Info"&_ "INNER JOIN Table_Equipment ON Table_Contract_Info.ID_Contract = Table_Equipment.ID_Contract" cboContractExpense
cboSpecification.Requery End Sub
*** ขอขอบคุณที่ให้ความช่วยเหลือค่ะ
ปี(cboContractExpense) = Fildชื่อ ID_Contract ที่ตารางTable_Equipment
เลขที่สัญญา = Fildชื่อ Contract_No ที่ตาราง Table_Contract_Info
รายการอุปกรณ์(cboSpeccification) = Fildชื่อ Equipment_type ที่ตาราง Table_Equipment
ราคาต่อเดือน = Fildชื่อ Price_Per_Month ที่ตาราง Table_Equipment
เขียน code แบบนี้ค่ะ
Private Sub cboContractExpense_onchange()
cboSpeccification.RowSource = "Select Equipment_type FROM Table_Contract_Info"&_ "INNER JOIN Table_Equipment ON Table_Contract_Info.ID_Contract = Table_Equipment.ID_Contract" cboContractExpense
cboSpecification.Requery End Sub
*** ขอขอบคุณที่ให้ความช่วยเหลือค่ะ
5 @R07242
Private Sub cboContractExpense_onchange()
cboSpeccification.RowSource = "Select Equipment_type FROM " & _
"Table_Contract_Info INNER JOIN Table_Equipment ON Table_Contract_Info.ID_Contract = Table_Equipment.ID_Contract " & _
"Where Table_Contract_Info.Contract_No Like '" & ชื่อtextboxที่แสดงเลขที่สัญญา & "' AND " & _
"Equipment_type.ID_Contract = " & cboContractExpense
cboSpecification.Requery
End Sub
Time: 0.2191s
http://www.thai-access.com/Topic.asp?src=ค้น คอมโบ&CategoryID=1