สมัครสมาชิก
 

ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

15 ธ.ค. 61 , 12:45:15
อ่าน 351 ครั้ง

buakird

ผมได้ไฟล์ตัวอย่างพร้อมคำสั่ง VBA ในการทำแบบฟอร์มกรอกที่อยู่ที่สามารถเลือกรหัสไปรษณีย์ได้อัติโนมัติเมื่อพิมพ์ชื่อจังหวัด อำเภอ ตำบล เข้าไป  ผมนำไปปรับใช้การทำทะเบียนประวัติสมาชิกในหน่วยงาน  ได้ผลดีมากครับ  ทำงานได้รวดเร็วขึ้น  แต่ทางหัวหน้างานอยากให้เพิ่มช่องภูมิภาคถิ่นที่อยู่เข้าไปโดยอัตโนมัติเพื่อพิมพ์ชื่อจังหวัด  โดยในมีไฟล์ geo_id อยู่แล้วใน tb_province และ tb_district ผมไม่มีความรู้ทางด้าน VBA นัก ลองเขียนคำสั่งเพิ่มเข้าไปคำสั่งที่มีอยู่เดิม
แต่ไม่สำเร็จ  รบกวนช่วยนำทางให้ด้วยครับ ผมเพิ่มคอลัมน์ locate ในไฟล์ table1 แล้ว


คำสั่งเก่า...
Option Compare Database
Option Explicit

Private Sub Form_Load()
    Me.cb_province.RowSource = "SELECT tb_province.province_id, tb_province.Province_th FROM tb_province;"
    Me.cb_amphur.RowSource = "SELECT tb_amphur.amphur_id, tb_amphur.amphur_th FROM tb_province INNER JOIN tb_amphur ON tb_province.province_id = tb_amphur.province_id WHERE (((tb_province.Province_th)=[Forms]![Form1]![cb_province]));"
    Me.cb_district.RowSource = "SELECT tb_district.district_id, tb_district.district_th FROM tb_district INNER JOIN tb_amphur ON tb_district.amphur_id = tb_amphur.amphur_id WHERE (((tb_amphur.amphur_th)=[Forms]![Form1]![cb_amphur]));"
End Sub

Private Sub cb_province_Change()
    Me.cb_amphur.Requery
    Me.cb_amphur = Null
    Me.cb_district = Null
    Me.txt_zipcode = Null
End Sub

Private Sub cb_amphur_Change()
    Me.cb_district.Requery
    Me.cb_district = Null
    Me.txt_zipcode = Null
End Sub

Private Sub cb_district_Change()
    Me.txt_zipcode = DLookup("post_code", "tb_district", "district_th= '" & Me.cb_district & "' AND amphur_id = " & Me.cb_amphur.Column(0, Me.cb_amphur.ListIndex))
End Sub

Private Sub cb_amphur_GotFocus()
    Me.cb_amphur.Requery
End Sub

Private Sub cb_district_GotFocus()
    Me.cb_district.Requery
End Sub

 
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

15 ธ.ค. 61 , 15:17:37
ตอบกลับ #1

ปิ่นณรงค์

: ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess
« ตอบกลับ #1 เมื่อ: 15 ธ.ค. 61 , 15:17:37 »


ใช้วิธีการเดียวกับการแสดง  อำเภอ  ตำบล นั้นละครับ เมื่อเรากดเลือก Geo แล้วพอจะเลือกจังหวัด เราก็กำหนดให้เลือก Geo_ID จากCombobox  Cb_geography ที่เรากำหนด
วิธีการคือ
1.สร้าง Combobox เพิ่มตั้งชื่อว่า Cb_Geography โดยกำหนด RowSource ของ Cb_geography ดังนี้
โค๊ด: [Select]
SELECT tb_geography.GEO_ID, tb_geography.GEO_NAME FROM tb_geography;
2.ในส่วนของ Combobox Cb_Province ก็กำหนด Rowsource ดังนี้
โค๊ด: [Select]
SELECT tb_province.province_id, tb_province.Province_th, tb_province.GEO_ID FROM tb_province INNER JOIN tb_geography ON tb_province.geo_id = tb_geography.GEO_ID WHERE (((tb_province.GEO_ID)=[Forms]![Form1]![Cb_geography]));
ส่วน Code ให้แก้เป็นแบบนี้ครับ
โค๊ด: [Select]
Option Compare Database
Option Explicit

Private Sub Cb_geography_AfterUpdate()
    Me.cb_province.Requery
    Me.cb_province = Null
    Me.cb_amphur = Null
    Me.cb_district = Null
    Me.txt_zipcode = Null
End Sub

Private Sub cb_province_AfterUpdate()
    Me.cb_amphur.Requery
    Me.cb_amphur = Null
    Me.cb_district = Null
    Me.txt_zipcode = Null
End Sub
Private Sub cb_province_GotFocus()
Me.cb_province.Requery
End Sub

Private Sub cb_amphur_AfterUpdate()
    Me.cb_district.Requery
    Me.cb_district = Null
    Me.txt_zipcode = Null
End Sub
Private Sub cb_district_AfterUpdate()
    Me.txt_zipcode = DLookup("post_code", "tb_district", "district_th= '" & Me.cb_district & "' AND amphur_id = " & Me.cb_amphur.Column(0, Me.cb_amphur.ListIndex))
End Sub

Private Sub cb_amphur_GotFocus()
    Me.cb_amphur.Requery
End Sub
Private Sub cb_district_GotFocus()
    Me.cb_district.Requery
End Sub
Private Sub Form_Load()
Me.Cb_geography.SetFocus
End Sub

สามารถดูตัวอย่างที่แก้ไข ด้านล่างครับ
« แก้ไขครั้งสุดท้าย: 17 ธ.ค. 61 , 08:59:19 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี, buakird

19 ธ.ค. 61 , 11:20:44
ตอบกลับ #2

buakird

: ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess
« ตอบกลับ #2 เมื่อ: 19 ธ.ค. 61 , 11:20:44 »
ขอบพระคุณมากครับ...ขออนุญาตถามต่ออีกนิดครับ
ถ้าผมไม่ต้องการให้ช่องภูมิภาคเป็นช่องหลัก...ที่จะนำไปสู่การเลือกช่องจังหวัด  แต่ผมอยากได้ช่องภูมิภาคเป็นช่องผลพลอยได้จากเลือกจังหวัด คือ พอเลือกจังหวัดเสร็จ ช่องภูมิภาคขึ้นมาพร้อมๆกันเลย พอเป็นไปได้มั๊ยครับ  ขอบพระคุณครับ

 

19 ธ.ค. 61 , 14:48:24
ตอบกลับ #3

UnKnown

: ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess
« ตอบกลับ #3 เมื่อ: 19 ธ.ค. 61 , 14:48:24 »
อ้างถึง
ไม่ให้ช่องภูมิภาคเป็นช่องหลัก , เลือกจังหวัดเสร็จ > ช่องภูมิภาคขึ้นมาให้เลย
ผมขออนุญาตนำไฟล์ของ อ.ปิ่นณรงค์ ไปแก้นะครับ โดย
• เปลี่ยนช่องเลือกภาค(Cb_geography) เป็น TextBox
• จังหวัด
  - column count = 3 , column widths = 0cm;2cm;0cm
  - Data > Row Source =
โค๊ด: [Select]
SELECT tb_province.province_id, tb_province.Province_th, tb_geography.GEO_NAME FROM tb_province INNER JOIN tb_geography ON tb_province.geo_id = tb_geography.GEO_ID;
  - VB ในส่วนของ cb_province_AfterUpdate เพิ่ม     
โค๊ด: [Select]
Me.Cb_geography = cb_province.Column(2)
ปล.ผมก็...เอาอ่านะลองดูจากไฟล์เลยครับ :prettiness:

 
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์, buakird

19 ธ.ค. 61 , 15:15:59
ตอบกลับ #4

buakird

: ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess
« ตอบกลับ #4 เมื่อ: 19 ธ.ค. 61 , 15:15:59 »
ขอบพระคุณมากครับ.. :smile:

 

22 ธ.ค. 61 , 11:24:48
ตอบกลับ #5

buakird

: ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess
« ตอบกลับ #5 เมื่อ: 22 ธ.ค. 61 , 11:24:48 »
รบกวนเพิ่มเติมครับ...
ได้นำคำแนะนำทั้งหมดมาลงทำงานในตารางโดยผ่านฟอร์ม...ปรากกฏว่า..ฟอร์มกับตารางไม่ค่อยจะสัมพันธ์กัน...พิมพ์ข้อมูลบนฟอร์มแต่ไม่ปรากฏในตารางต้องปิดตารางแล้วเปิดมาใหม่จึงจะปรากฏข้อมูล...ไม่ทราบผิดพลาดตรงไหนครับ

 

04 ม.ค. 62 , 16:54:41
ตอบกลับ #6

Kittenice

  • สมาชิกไท.Access
  • กระทู้: 6

  • Thank You ไท.Access

    • ดูรายละเอียด

: ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess
« ตอบกลับ #6 เมื่อ: 04 ม.ค. 62 , 16:54:41 »
 :startle:
« แก้ไขครั้งสุดท้าย: 04 ม.ค. 62 , 17:06:27 โดย Kittenice »

 

05 ม.ค. 62 , 11:17:23
ตอบกลับ #7

UnKnown

: ช่วยแนะนำการเขียนคำสั่ง VBA ใน Acess
« ตอบกลับ #7 เมื่อ: 05 ม.ค. 62 , 11:17:23 »
รบกวนเพิ่มเติมครับ...
ได้นำคำแนะนำทั้งหมดมาลงทำงานในตารางโดยผ่านฟอร์ม...ปรากกฏว่า..ฟอร์มกับตารางไม่ค่อยจะสัมพันธ์กัน...พิมพ์ข้อมูลบนฟอร์มแต่ไม่ปรากฏในตารางต้องปิดตารางแล้วเปิดมาใหม่จึงจะปรากฏข้อมูล...ไม่ทราบผิดพลาดตรงไหนครับ

ติดตามต่อได้ที่กระทู้นี้เน้อ > การบันทึกข้อมูลลงตารางจากการใช้แบบฟอร์ม

 


บอร์ดเรียนรู้ Access สำหรับคนไทย