จังหวัดไหน ก็มีแต่อำเภอนั้น
กระทู้เก่าบอร์ด อ.Yeadram

 5,362   13
URL.หัวข้อ / URL
จังหวัดไหน ก็มีแต่อำเภอนั้น

พอดีว่าดูโค้ดในบอร์ดแล้วไม่รู้เรื่องนะคะ

Private Sub cbProvince_Onchange()
cbAmphur.rowsource ="Select * From ............ Where ......= " & cbProvince
cbAmphur.requery
End sub


จากโค้ดนี้ ที่......... จะต้องเขียนอะไรไปอะคะ พอดีว่าไม่ค่อยรู้เรื่องเลย
แล้วโค้ดนี้เขียนใน cpmob ของช่องอำเภอหรือว่าจังหวัดคะ


ตารางเก็บจังหวัดตั้งชื่อ จังหวัด
ตารางอำเภอตั้งชื่อ อำเภอ

13 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R03642
เพิ่งหัดเขียน VBA เหรอครับ ไม่เป็นไร ไปช้าครับ

หาข้อมูลนี้มาก่อนครับ
ชื่อคอมโบ ที่แสดงจังหวัด ชื่ออะไร
ชื่อคอมโบ ที่แสดงอำเภอ ชื่ออะไร
ตารางจังหวัด มีฟิลด์ อะไรบ้าง เอาชื่อฟิลด์เป๊ะๆ
ตารางอำเภอ มีฟิลด์อะไรบ้าง
ตารางอำเภอ กับตารางจังหวัด ใช้ฟิลด์อะไรเป็นตัวเชื่อมความสัมพันธ์ เอาชื่อฟิลด์ สะกดให้ถูกต้อง เป๊ะๆ

ไม่รีบใช่ไหมครับ งั้นตอบมาก่อนครับ แล้วจะพาทำต่อไป พร้อมอธิบายอย่างช้าๆ
2 @R03655
ขอทำตามด้วยคนครับ
3 @R03662
-ในมุมมองออกแบบ
combo92
- กำหนด ชนิดของแหล่งข้อมูล (rowsource type) เป็น Table/query
- แหล่งข้อมูล เป็น อำเภอ (ชื่อตารางนะเนี่ยสาบานได้ อิอิ)
- กำหนดจำนวนคอลัมภ์ เป็น 3
- กำหนดความกว้างคอลัมภ์ เป็น 0;2;0   (มองเห็นเฉพาะชื่ออำเภอ แต่เก็บข้อมูลรหัสอำเภอ)
- ไม่ต้องกำหนด ค่าเริ่มต้น

combo90
- กำหนด ชนิดของแหล่งข้อมูล (rowsource type) เป็น Table/query
- แหล่งข้อมูล เป็น จังหวัด (ชื่อตาราง)
- กำหนดจำนวนคอลัมภ์ เป็น 1
- กำหนดความกว้างคอลัมภ์ เป็น 2.5
- กำหนดค่าเริ่มต้นเป็น "กรุงเทพมหานคร"
- ในไดอะล็อกคุณสมบัติ (อันเดียวกันที่เรากำหนดค่าต่างๆนั่นแหละ) ไปที่แท็บ Event มองหาบรรทัด "เมื่อเปลี่ยนแปลง" (onChange) คลิ๊กเลือกตัวเลือก [Event Procedure] แล้วคลิ๊กที่ปุ่ม ... ข้างหลังนั่น (นี่คือการเริ่มต้นเขียนโค้ด VBA ฝังในเหตุการณ์)

มันจะเปิดหน้าต่าง VBA ขึ้นมาพร้อมเขียนตัวหนังสือไว้บ้างแล้ว สองบรรทัด
Private Sub combo90_Change()

End sub

สังเกต * มันเริ่มต้นที่ Private Sub................. และไปจบที่ End Sub
ให้เราแทรกคำสั่งต่างๆ เข้าไปตรงนั้นแหละครับ

ดูดีๆ นะครับ ทุกๆ คำถาม ทุกๆ ชื่อ ที่ผมได้ถามคุณไปก่อนนี้ ผมเอามันมาใช้ตรงไหนบ้าง


combo92.rowsource ="Select * From [อำเภอ] Where ([ProName] Like '" & combo90 & "')"
combo92.requery

เซฟ และปิด VBA ครับ ลองรันฟอร์มดู> เลือก "จังหวัด" ก่อนแล้วดูรายการใน "อำเภอ"

โค้ดมันมีแค่สองคำสั่งเองครับ อิอิ


4 @R03670
ที่ combo90 เลือก Event - on gotfocus สร้างเหตุการณ์ (Event procedure)
แล้วเขียน code ดังนี้

Dim ProvinceStr as String
ProvinceStr="SELECT Proname FROM Province"
combo90.rowsource=ProvinceStr


ที่ combo92 เลือก Event - on gotfocus สร้างเหตุการณ์ (Event procedure)
แล้วเขียน code ดังนี้


Dim DistrictStr as String
DistrictStr="SELECT DisID,DisName FROM District WHERE Proname=Forms!ชื่อฟอร์ม.combo90"
combo92.rowsource=DIstrictStr
5 @R03672
น่าจะผิดพลาดที่ตัว combo92 นั่นแหละ ลองส่ง file มาที่
natpdce@hotmail.com มีเวลา 30 นาทีครับ
6 @R03673
ขออนุญาตครับ
ลองดูจากที่นี่
http://www.ptlhosp.go.th/occ/1pro.html
พอช่วยได้เปล่าไม่แน่ใจ
ทุกอย่างอยู่ที่การออกแบบ
จากตารางเดียวกัน หรือจะทำทั้ง 3 ตาราง(ก็ได้แล้วแต่เรา)
การเลือกข้อมูลนั้นต้องเลือกจังหวัดก่อน ถึงเลือกอำเภอ
7 @R03679
บอกชื่อตารางผิด
บอกชื่อคอมโบก็ผิด
ผมก็เขียนให้ผิดๆ
ที่คุณบอกว่า ลองแก้ไขแล้ว ก็ยังไม่ได้
อยากทราบว่า คุณแก้ไข อย่างไรบ้าง
คุณนำโค้ดไปเขียนไว้อย่างไรบ้าง โค้ดที่เขียนไปเขียนว่าอะไรบ้าง การออกแบบ ออกแบบอย่างที่ผมแนะนำหรือเปล่า
หากต้องการส่งไฟล์ให้ดู ส่งที่ accboard @ gmail ครับ เขียนหัวข้อจดหมายให้ตรงกับชื่อกระทู้หรือใช้หมายเลขกระทู้ก็ได้ เพื่อคนอื่นที่ได้ตามมาอ่านในภายหลัง จะได้ตามอ่านได้ถูกต้องครับ
8 @R03706
combo92.rowsource ="Select * From [อำเภอ] Where ([ProName] Like '" & combo90 & "'"
combo92.requery
(

ผมลองทำตามดูก็พอเดาออกว่าผิดตรงใหนที่ไม่ขึ้นน่ะ คือผมว่าคุณพิมพ์ตาม อ.yeadram แล้วพอดี อ. น่าจะใส่วงเล็บเกินไปตัวน่ะครับต้องเอาวงเล็บออกครับน่าจะใช้ได้ ถ้าไม่ได้คุณน่าจะดูที่ตารางกับชื่อฟิลด์ที่คุณให้ไว้น่าจะไม่ตรงกันครับไม่มีวงเล็บมั๊งครับ ถ้ามีก็ต้องใส่วงเล็บปิดครับ

9 @R03707
วงเล็บตรง ในโค๊ดน่ะครับตรงคำว่า Where ([ProName] ตรงข้างหน้า [proname] น่ะ ลองลบวงเล็บออกครับ
10 @R03712
ผมดูตัวอย่างจาก gmail แล้วนะครับ
1 คุณตั้งค่าคอมโบของอำเภอ ผิด!
- ผมให้กำหนดแหล่งข้อมูลเป็น อำเภอ ถ้าตารางของคุณมันชื่อ distric คุณก็ลบคำว่าอำเภอออก แล้วเขียนใหม่เป็น distric ซิครับ นั่นคุณเขียนอะไรใส่เข้าไปน่ะ
- คอมโบของจังหวัดเช่นกัน ผมก็บอกให้แล้วว่ากำหนดแหล่งข้อมุลเป็นชื่อตาราง คุณเขียนอะไรลงไปครับนั่น
- คอมโบอำเภอบอกให้กำหนด จำนวนคอลัมภ์เป็น 3 ผมเห็นของคุณยัง เป็น 1 อยู่เลย


2 ตารางที่เก็บข้อมูลของคุณคือ ทรัพย์สิน คุณตั้งค่ารับข้อมูลอำเภอ ไว้แค่ 20 ตัวอักษร อันนี้ ตอนที่ทดสอบยังไม่เจอปัญหา แต่ในอนาคต ไม่แน่
เพราะแทนที่คุณจะรับ รหัสอำเภอ ไปเก็บ แต่คุณเอาชื่ออำเภอเข้าไปเก็บ ซึ่งชื่ออำเภอ คือ ฟิลด์ข้อมุลที่คุณจะนำมาจากตาราง District ในนั้นคุณกำหนดความยาวไว้สูงสุด 255 ตัวอักษร
มองในทางทฤษฎี คือ ชื่ออำเภอที่คุณกรอกไว้สามารถยาวได้ แต่พอคุณจะเอาไปใช้ ห้ามมันยาวเกิน 20อักษร มันขัดแย้งกันครับ

โค้ดที่ผมให้ไปทำงานได้แล้วครับ แต่ก็ตามที่คุณ เก๋ฮะ บอกไป ผมพิมพ์ตก วงเล็บปิดตอนท้าย ถ้าไม่อยากเติม ก็ไปเอาวงเล็บเปิดที่เกินน่ะ ออกครับ


Private Sub combo90_Change()
combo92.rowsource ="Select * From [อำเภอ] Where ([ProName] Like '" & combo90 & "')"
combo92.requery
End sub

11 @R06207
อ่านหลายกระทู้ก็มึนๆ คะ กับ ค่ะ แก้มึนได้เหมียลกัลล์
12 @R06221
ผมมีตัวอย่างเกี่ยวกับอ. จ.
ลองโหลดไปศึกษาดูครับ

http://access.crtrading.net/fileDownload2009.aspx?softwareID=39
13 @R10581
ของคุณ yeadram ใช่เลยครับที่หาอยู่ ขอบคุณมากครับ
ของผมแยกตารางอำเภอกับตำบลนะครับ ผมเอามาดัดแปลงเป็นแบบนี้นะครับ นำมาแบ่งปันจะได้มีหลายๆตัวอย่างครับ

Private Sub amphur_Change()
tumbon.RowSource = "Select DISTRICT_NAME From [district] Where ([AMPHUR_NAME] Like '" & amphur & "')"
tumbon.Requery
End Sub
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3655s