กระทู้เก่าบอร์ด อ.Yeadram
1,940 3
URL.หัวข้อ /
URL
ค้นหาข้อมูลข้ามฟิลด์?
รบกวนถามเรื่องการค้นหาข้อมูลคับ
จะต้องเขียนโปรแกรมอย่างไรให้สามารถค้นหาข้อมูลข้ามฟิลด์ได้ ยกตัวอย่างเช่น
สร้าง txt สำหรับรับค่า keyword
สร้าง cmd สำหรับ กดเพื่อค้นหา
เมื่อผู้ใช้ระบุ keyword แล้วกดปุ่มค้นหา
โปรแกรมก็จะไปค้นหาข้อมูลที่อยู่ในตาราง tblCus โดยเริ่มค้นหาจากฟิลด์ A ถ้าไม่เจอข้อมูลให้ข้ามไปค้นหาจากฟิลด์ B ถ้าไม่เจอข้อมูลอีกให้ข้ามไปค้นหาจากฟิลด์ C และถ้าเจอข้อมูลในฟิลด์ใดก็ให้แสดงข้อมูลออกมา(แสดงข้อมูลที่ไหนนั้นเดียวจะไปต่อยอดอีกที)ถ้าไม่เจอข้อมูลก็ให้แสดง msg บอก
อยากทราบโค้ดการค้นหาข้อมูลข้ามฟิลด์ดังที่ยกตัวอย่าง
ไม่ทราบว่ามีวิธีการอย่างไร
รบกวนกรุณาแนะนำด้วยคับ
ขอบคุณคับ
จะต้องเขียนโปรแกรมอย่างไรให้สามารถค้นหาข้อมูลข้ามฟิลด์ได้ ยกตัวอย่างเช่น
สร้าง txt สำหรับรับค่า keyword
สร้าง cmd สำหรับ กดเพื่อค้นหา
เมื่อผู้ใช้ระบุ keyword แล้วกดปุ่มค้นหา
โปรแกรมก็จะไปค้นหาข้อมูลที่อยู่ในตาราง tblCus โดยเริ่มค้นหาจากฟิลด์ A ถ้าไม่เจอข้อมูลให้ข้ามไปค้นหาจากฟิลด์ B ถ้าไม่เจอข้อมูลอีกให้ข้ามไปค้นหาจากฟิลด์ C และถ้าเจอข้อมูลในฟิลด์ใดก็ให้แสดงข้อมูลออกมา(แสดงข้อมูลที่ไหนนั้นเดียวจะไปต่อยอดอีกที)ถ้าไม่เจอข้อมูลก็ให้แสดง msg บอก
อยากทราบโค้ดการค้นหาข้อมูลข้ามฟิลด์ดังที่ยกตัวอย่าง
ไม่ทราบว่ามีวิธีการอย่างไร
รบกวนกรุณาแนะนำด้วยคับ
ขอบคุณคับ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R01120
ผมสร้างปุ่มคำสั่งจากกล่องเครื่องมือ ในฟอร์ม1 ให้ เปิดฟอร์ม 2 เพื่อดูภาพ
แต่พอเปิด ฟอร์ 2 กลับไปอยู่ที่เรคคอร์ด 1 ตลอด
ทำไงให้ เมื่อกดปุ่ม เปิดฟอร์ม2 แล้วให้ไปเปิดที่เรคคอร์ดเดียวกับฟอร์ม 1
ขอบคุณครับ
แต่พอเปิด ฟอร์ 2 กลับไปอยู่ที่เรคคอร์ด 1 ตลอด
ทำไงให้ เมื่อกดปุ่ม เปิดฟอร์ม2 แล้วให้ไปเปิดที่เรคคอร์ดเดียวกับฟอร์ม 1
ขอบคุณครับ
3 @R01121
ในคำสั่ง เปิดฟอร์ม
docmd.openform จะมี อากิวเมนต์ wherecondition ครับ ใส่เงื่อนไขการเปิดในนั้นได้เลย
OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)
ฟอร์ม1 กับฟอร์มสองของคุณที่บอกว่า เรคคอร์ดเดียวกันน่ะ รู้ได้อย่างไรว่ามันอันเดียวกัน ดูจากไหน
คุณก็เอาสิ่งที่คุณดูนั่นแหละครับเป็นเงื่อนไขการเปิดฟอร์ม
sq = "Invoice = '" & txInvoice & "'"
docmd.openform "ฟอร์ม2",acnormal, ,sq
docmd.openform จะมี อากิวเมนต์ wherecondition ครับ ใส่เงื่อนไขการเปิดในนั้นได้เลย
OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)
ฟอร์ม1 กับฟอร์มสองของคุณที่บอกว่า เรคคอร์ดเดียวกันน่ะ รู้ได้อย่างไรว่ามันอันเดียวกัน ดูจากไหน
คุณก็เอาสิ่งที่คุณดูนั่นแหละครับเป็นเงื่อนไขการเปิดฟอร์ม
sq = "Invoice = '" & txInvoice & "'"
docmd.openform "ฟอร์ม2",acnormal, ,sq
Time: 0.3639s
dim sql as string
sql = "Select * form ..... where ( " & _
filed1 like '*" & keyword & "*' or " & _
filed2 like '*" & keyword & "*' or " & _
filed3 like '*" & keyword & "*')"
.........recordsource = sql
หรือ ...... rs.open sql, currentproject.connection
แล้วค่อยเอาผล rs ไปทำอะไรก็ได้ครับ
end sub
นั่นเป็น การหาพร้อมกันทุกฟิลด์ คือ ใช้ Like..... แล้ว ก็ or
แต่ถ้าต้องการเป็นลำดับ อย่างที่กล่าว คือจะให้หาใน ฟิลด์แรกก่อน ถ้าไม่เจอ ค่อยไปหาฟิลด์ต่อไป แต่ถ้าเจอ ก็ให้หยุดการค้นหา ก็ใช้ If ..... then เข้าช่วย ครับ โดยในส่วน เงื่อนไขการหา ก็ไม่ต้อง or เช่น
sql = "Select * from ... where field1 like '*" & keyword & "*'"
if rs.eof and rs.bof then .....
ประมาณนี้แหละครับ ลองดัดแปลงดูครับ หลักๆ คือ เขียนเป็น select statement ครับ
--------------------------------------------
ส่วนการใช้ dlookup ก็มีหลักคล้ายๆ กัน คือถ้า ผลของ dlookup ได้มาเป็น null ค่อยไปหาฟิลด์ต่อไป
if (dlookup("ฟิลด์1", "ตาราง", "[ฟิลด์1] Like '*" & keyword & "*'") =null then...