กระทู้เก่าบอร์ด อ.Yeadram
        
           1,353   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.4024s
    
      
		
ผมลองคิดๆ เขียนโฟลว์ก่อนก็แล้วกันครับ ถ้าไม่เจอตัวต้องการ เราต้องหาก่อนว่า รายการใดใกล้เคียงที่สุด ซึ่งแนวคิดดังกล่าวตั้งอยู่บนข้อสมมติฐานหลัก ชื่อรายการเป็นอักษรเดี่ยวภาษาอังกฤษ
- ประกาศตัวแปรเตรียมเก็บค่ารายการ
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 = '" & ค่าตัวแปร & "'"