กระทู้เก่าบอร์ด อ.Yeadram
1,191 2
URL.หัวข้อ /
URL
ค้นหาข้อมูลให้ได้ที่ไกล้เคียงถ้าหาไม่เจอ
ต้องการค้นหาค่า Record ใกล้เคียงที่สุด เช่น
A
B
C
D
E
F
L
M
N
ถ้าเราสั่งค้นหา ค่า H อยากให้ผลลัพธ์แสดงที่ตัว F หรือ L ก็ได้ครับ
ผมลองใช้ docmd.findrecord "H" ก็ Error
สั่ง me.recordsetclone.findfirst "field = 'H'" ก็ไม่มีอ??ไรเกิดขึ้น
แต่ถ้าสั่ง me.recordsetclone.findfirst "field = 'M'" สามารถหาพบ
A
B
C
D
E
F
L
M
N
ถ้าเราสั่งค้นหา ค่า H อยากให้ผลลัพธ์แสดงที่ตัว F หรือ L ก็ได้ครับ
ผมลองใช้ docmd.findrecord "H" ก็ Error
สั่ง me.recordsetclone.findfirst "field = 'H'" ก็ไม่มีอ??ไรเกิดขึ้น
แต่ถ้าสั่ง me.recordsetclone.findfirst "field = 'M'" สามารถหาพบ
2 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R06997
Dim rs as DAO.Recordset
set rs = me.recordsetclone
rs.FindLast "field <= H"
if rs.nomatch then
rs.FindFirst "field > H"
if rs.nomatch then
exit sub (หรือ exit function)
end if
end if
me.bookmark = rs.bookmark
ทั้งนี้ทั้งนั้นข้อมูลบนหน้าจอต้องเรียงจากน้อยไปมากอยู่แล้วนะครับ ไม่เช่นนั้นอาจไม่ได้ผลตามที่ต้องการ
set rs = me.recordsetclone
rs.FindLast "field <= H"
if rs.nomatch then
rs.FindFirst "field > H"
if rs.nomatch then
exit sub (หรือ exit function)
end if
end if
me.bookmark = rs.bookmark
ทั้งนี้ทั้งนั้นข้อมูลบนหน้าจอต้องเรียงจากน้อยไปมากอยู่แล้วนะครับ ไม่เช่นนั้นอาจไม่ได้ผลตามที่ต้องการ
Time: 0.3359s
ผมลองคิดๆ เขียนโฟลว์ก่อนก็แล้วกันครับ ถ้าไม่เจอตัวต้องการ เราต้องหาก่อนว่า รายการใดใกล้เคียงที่สุด ซึ่งแนวคิดดังกล่าวตั้งอยู่บนข้อสมมติฐานหลัก ชื่อรายการเป็นอักษรเดี่ยวภาษาอังกฤษ
- ประกาศตัวแปรเตรียมเก็บค่ารายการ
1) ค้นหา H ในรายการ ถ้าเจอ ให้เอา H ป้อนเข้าตัวแปร แล้วให้ข้ามไปข้อ 3)
2) - H คืออักษรชึ่งมีค่าลำดับในรหัสแอสกีที่ 72
- วนลูปดังนี้
for i =1 to 26
ให้ค้นหาว่า ในรายการต่าง มีอักษรที่มีรหัสแอสกีนี้หรือไม่ 72-i หรือไม่
เช่น dcount( ......chr(72-i)......) >0
ถ้ามีให้ เก็บค่าตัวอักษร chr(72-i) เข้าตัวแปร, ออกจากลูปและกระโดดไปข้อ 3)
ให้ค้นหาในทางกลับกันอีกครั้ง 72+i
ถ้ามีให้ เก็บค่าตัวอักษร chr(72+i) เข้าตัวแปร, ออกจากลูปแล้วกระโดดไปข้อ 3)
next
3) สั่งฟอร์มให้ค้นหารายการ ตามค่าตัวแปรที่หาได้
เช่น me.recordsetclone.findfirst "field = '" & ค่าตัวแปร & "'"