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
Trackback(0)
Comments (4)add comment

eye2903@L said:

0
ดูเหมือนมันยังขาดอะไรนะครับ
smilies/grin.gifsmilies/grin.gifsmilies/grin.gifโทษทีครับพี่ Man@dmin ผมต้องการให้เป็นอย่างนี้ครับ
1. เมื่อผมมีตารางแม่ตัวหนื่ง แล้วผมเอาตารางนั้นมาเป็น Form หลัก ชื่งผมสร้าง Combobox ใน Form นั้นนะครับ
2. เวลาผม Record ข้อมูลลงไปใน Form นั้นแล้วผมต้องการให้มันไปบันทืกใน Table ที่ผมเอามาทำเป็นตารางแม่นั้นแหระคระบ
3. ผมทำทีไหร ไม่ได้ทุกที
smilies/grin.gifsmilies/grin.gifแต่ไม่เป็นไหรครับ คนอย่างผมชอบทำอะไรที่ท้าทาย
เมื่อพี่ Man@dmin ลงทุนทำขะหนาดนี้ผมต้องทำให้ได้ครับ
 
พฤษภาคม 28, 2010
Votes: +0

webmaster said:

0
ไม่เข้าใจคำถามครับ
ไม่เข้าใจคำถามครับ... ถ้าทำจากตัวอย่างนี้ได้แล้ว จะเข้าใจเองครับว่า เราจะเอาไปประยุกต์ใช้แบบไหน

เช่น เมื่อเราเลือกมาจนได้ตัวสินค้ามาแล้ว... อยากให้บันทึกลงตามรางไหน... ก็เขียนคำสั่ง ตรงเหตุการณ์ เช่น On Click
ให้มันไปบันทึกลงตาราง ด้วยคำสั่ง Insert Into หรือ จะเขียนแบบบันทึกลงฟิลด์เลยก็ได้

ยังไง ลองค่อย ๆ อธิบายคำถามให้พี่เข้าใจอีกนิดนะครับ... บางทีอาจจะไม่ใช่เรื่องยากแบบนี้ แต่พี่อาจคิดไปไกลเกิน
 
พฤษภาคม 28, 2010
Votes: +0

eye2903@L said:

0
เข้าใจง่ายๆครับ
ตัวอย่างเชั่น
1. เรามีตารางจังหวัดทุกจังหวัด
2. เรามีตารางแม่
และเราก็เอาตารางแม่มาทำเป็น Form
เราเลยเอาตารางจังหวัดนั้นมาทำเป็น Combobox เพื่อให้ใช้ในform นั้นได้
แต่บังเอีนผมทำได้ครับ แต่มันดันไม่บันทิกในตารางแม่ครับ
นี้แหระบันหา
smilies/angry.gifsmilies/sad.gifsmilies/sad.gifsmilies/sad.gifsmilies/sad.gif
 
พฤษภาคม 28, 2010
Votes: +0

webmaster said:

0
เข้าใจแล้วครับ
เข้าใจแล้วครับ ว่าต้องการแบบไหน
เดี๋ยวขอทำบทเรียนก่อนครับ... จะเอามา แนะนำให้ครับ
ช้าตอนจับภาพหน้าจอ แล้ว มาทำบทเรียนครับ.... เพื่อน ๆ จะได้เข้าอย่างแจ่มแจ้ง
 
มิถุนายน 04, 2010
Votes: +0

Write comment
smaller | bigger

busy
แก้ไขล่าสุด ใน วันพฤหัสบดีที่ 27 พฤษภาคม 2010 เวลา 17:08 น.