Home แอคเซส(Access) สร้าง Combo box ให้เชื่อมโยง กับ list box แบบตารางแม่ ตารางลูก


สร้าง Combo box ให้เชื่อมโยง กับ list box แบบตารางแม่ ตารางลูก PDF พิมพ์ อีเมล
เขียนโดย man@dmin   
วันพฤหัสบดีที่ 27 พฤษภาคม 2010 เวลา 16:19 น.

pointer_move นาน ๆ ทีได้มาเพิ่มบทความ... เพราะว่ายุ่ง เหมือนยุงตีกันมาก ๆ ครับ

pointer_move เมื่อวานน้องที่บอร์ด อยากทราบเรื่องเกี่ยวกับการเชื่อมโยงข้อมูลตารางแม่ กับตารางลูกด้วย Combo Box
ผมก็เลยทำเกิน เพิ่ม List Box มาให้ด้วยเลย... เป็นของแถมแบบ นาน ๆ มาที Tongue out

pointer_move ที่มาคำถามจาก หัวข้อกระทู้

ของบอร์ด Navy34.com ครับ... ยกยอดเอามาตอบที่นี่ให้เป็นหมวดหมู่


combobox001


1. อันดับแรก เพื่อน ๆ สร้างตารางมา 3 ตาราง ตามภาพข้างบนเลยครับ

คือ t_Catalog , t_Product , t_Product_history

แล้วก็กำหนดฟิลด์ต่าง ๆ ตามภาพ(หวังว่าคงเห็นตัวหนังสืออยู่นะ...ตั้งใจ ให้เห็นหมดนะนี่)



2. จะเห็นความสัมพันธ์(ลาง ๆ)
- ของ catalog_id ของตาราง t_Catalog เชื่อมความสัมพันธ์กับ catalog_id ของ t_Product
- แล้วก็ product_id ของ t_Product เชื่อมความสัมพันธ์กับ product_id ของ t_Product_history


combobox002

3. จากนั้นก็สร้างฟอร์มมาสักฟอร์ม เอาตามผมก็ได้ให้ชื่อ frm_Cat

สร้าง Control มา 3 ตัว... คือ

3.1 Combo Box ชื่อ CmbCat ผูกกับแหล่งข้อมูล ตาราง t_Catalog ตามภาพข้างบน
หรือจะคัดลอก Code ข้างล่าง ดังนี้ ก็ตามลำบากครับ...

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT t_Catalog.catalog_name, t_Catalog.catalog_id FROM t_Catalog ORDER BY t_Catalog.catalog_id;

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

3.2 สร้าง List Box ชื่อ lstBoxProduct ไม่ต้องไปผูกอะไรกับมันนะ (เดี๋ยวตีมือหัก...) Cool

3.3 สร้าง List Box ชื่อ lstBoxProductHist




combobox004


4. ขั้นสำคัญก็คือการเขียน Code เพื่อผูกลูกให้เชื่อมแม่ ดังนี้

4.1 Combo Box ชื่อ CmbCat ที่เหตุการณ์(Event) On Click ก็ให้จินตนาการว่าถ้าเรากดคลิ๊กที่เจ้าแคตตาล็อกสินค้า ก็ให้รายการสินค้าที่มีรหัสตรงกับแคตตาล็อกนั้น แสดงออกมา ตามภาพข้างบน

4.1 ตรง List Box ชื่อ lstBoxProduct ก็สร้างเหตุการณ์(Event) On Click เช่นกันให้รายการรายละเอียดของสินค้าแต่ละตัวว่ามีประวัติเหลือสินค้าคงคลังกี่ชิ้น ในวันที่ไหนบ้าง ก็เหมือนประวัติของสินค้าแต่ละตัวแหละครับ


ใครขี้เกียจพิมพ์ ก็คัดลอกโค้ดเลยครับ....

แต่ควรลอกไปด้วยความเข้าใจ ดูภาพประกอบ แล้วก็ อ่านคำอธิบายตามครับ

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub CmbCat_Click()
Dim strCatId As String
Dim sql1 As String

strCatId = CmbCat.Column(1)


sql1 = " SELECT  t_Product.product_id, t_Product.product_name, t_Product.catalog_id"
sql1 = sql1 & " FROM t_Product "
sql1 = sql1 & " WHERE (t_Product.catalog_id)= '" & strCatId & "' ORDER BY t_Product.product_id; "

lstBoxProduct.RowSource = sql1


End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub lstBoxProduct_Click()

Dim strProductId As String
Dim sql2 As String

strProductId = lstBoxProduct.Column(0)

sql2 = " SELECT t_Product_history.history_id, t_Product_history.product_id, t_Product_history.procuct_date, t_Product_history.procuct_invent"
sql2 = sql2 & " FROM t_Product_history "
sql2 = sql2 & " WHERE (t_Product_history.product_id)= '" & strProductId & "' ORDER BY t_Product_history.product_id; "


lstBoxProductHist.RowSource = sql2


End Sub

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Wink ผลลัพธ์ที่เราต้องการก็จะออกมาเป็นแบบที่เห็นข้างล่างนี้ครับ... เรียบร้อย


combobox003
แก้ไขล่าสุด ใน วันพฤหัสบดีที่ 13 ตุลาคม 2011 เวลา 07:36 น.