กระทู้เก่าบอร์ด อ.Yeadram
        
           2,401   8		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        สร้างTextbox ให้แสดงข้อมูลย้อนหลัง1Record      
    
      ขอความช่วยเหลืออีกแล้วค่ะอาจารย์ ความต้องการหนูมีดังนี้นะคะ
คือหนูอยากสร้าง Textbox บนฟอร์ม สำหรับแสดงข้อมูลย้อนหลังจากข้อมูลล่าสุดกลับไป 1 Record เสมอ จะต้องเขียนโค้ดอย่างไรคะ ขอยกตัวอย่างดังนี้นะคะ สมมติหนูมีเทเบิลสำหรับเก็บข้อมูลลูกค้าอยู่ โดยในเทเบิลดังกล่าว ก็มี ฟิลด์ : ชื่อลูกค้า ซึ่งสมมติว่ามีข้อมูลอยู่ดังนี้
ลำดับที่ ชื่อลูกค้า
1 สมชาย
2 สมหญิง
3 สมบัติ
4 สมเกียรติ
5 สมพงษ์
6 สมหวัง
จากตัวอย่างสมมติ ลูกค้าคนล่าสุดนั้นก็คือคุณ สมหวัง ย้อนหลังกลับไป1 record ก็คือคุณ สมพงษ์ ประเด็นที่หนูต้องการก็คืออยากสร้าง Textbox บนฟอร์มให้แสดงข้อมูลย้อนหลังจากข้อมูลล่าสุดกลับไป 1 Record เพื่อจะดูว่าลูกค้าก่อนคนสุดท้ายนั้นคือใคร จากตัวอย่างนี้ก็ให้แสดงชื่อคุณ สมพงษ์ ขึ้นมา อะไรทำนองนี้แหละค่ะ
ขอความกรุณาอาจารย์ด้วยนะคะ ขอบคุณค่ะ
    
  คือหนูอยากสร้าง Textbox บนฟอร์ม สำหรับแสดงข้อมูลย้อนหลังจากข้อมูลล่าสุดกลับไป 1 Record เสมอ จะต้องเขียนโค้ดอย่างไรคะ ขอยกตัวอย่างดังนี้นะคะ สมมติหนูมีเทเบิลสำหรับเก็บข้อมูลลูกค้าอยู่ โดยในเทเบิลดังกล่าว ก็มี ฟิลด์ : ชื่อลูกค้า ซึ่งสมมติว่ามีข้อมูลอยู่ดังนี้
ลำดับที่ ชื่อลูกค้า
1 สมชาย
2 สมหญิง
3 สมบัติ
4 สมเกียรติ
5 สมพงษ์
6 สมหวัง
จากตัวอย่างสมมติ ลูกค้าคนล่าสุดนั้นก็คือคุณ สมหวัง ย้อนหลังกลับไป1 record ก็คือคุณ สมพงษ์ ประเด็นที่หนูต้องการก็คืออยากสร้าง Textbox บนฟอร์มให้แสดงข้อมูลย้อนหลังจากข้อมูลล่าสุดกลับไป 1 Record เพื่อจะดูว่าลูกค้าก่อนคนสุดท้ายนั้นคือใคร จากตัวอย่างนี้ก็ให้แสดงชื่อคุณ สมพงษ์ ขึ้นมา อะไรทำนองนี้แหละค่ะ
ขอความกรุณาอาจารย์ด้วยนะคะ ขอบคุณค่ะ
				8 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R03553    
        
  
      ขอบคุณมากค่ะอาจารย์ ใช้ได้เรียบร้อยดีเลยค่ะ
แต่ที่ท่านแสดงความเป็นห่วงว่า " แต่มันไม่รัดกุมมากนัก ช่องโหว่อาจจะเกิดได้ช่วง เปิดฟอร์มใหม่ " ตรงนี้อาจารย์ช่วยอธิบายเพิ่มเติมให้หน่อยนะคะ ว่ามันจะเกิดอะไรขึ้นหรือคะ คือหนูยังไม่พบสิ่งผิดปกติใดๆค่ะ
    
  แต่ที่ท่านแสดงความเป็นห่วงว่า " แต่มันไม่รัดกุมมากนัก ช่องโหว่อาจจะเกิดได้ช่วง เปิดฟอร์มใหม่ " ตรงนี้อาจารย์ช่วยอธิบายเพิ่มเติมให้หน่อยนะคะ ว่ามันจะเกิดอะไรขึ้นหรือคะ คือหนูยังไม่พบสิ่งผิดปกติใดๆค่ะ
        
    3 @R03563    
        
  
      คำสั่ง dlast() ในเหตุการณ์ form_load ไงครับ
มันอาจสร้างปัญหาได้ เช่น
กรณี ทำงานกับตารางเปล่า (เปิดดาต้าเบสของปีใหม่ เป็นต้น)
หรือบ่อยครั้งที่เรคคอร์ดสุดท้ายอาจจะไม่ใช่รายการสุดท้ายที่แท้จริง เพราะเรคคอร์ดสุดท้ายของตาราง มันอาจไม่ได้มาจากการกรอกข้อมูลของเรา แต่มันมาจาก statement หรือคิวรี่ insert
ซึ่งคิวรี่เหล่านั้น มันสามารถมาได้จากหลายๆที่ เช่น เราเขียนเองไว้ในฟังก์ชันไหนๆ ก็ไม่รู้จำไม่ได้ ไว้ในฟอร์มไหนก็ไม่รู้
หรือเกิดจากตอนรวมข้อมูล จาก ฐานข้อมูลก้อนเก่า + ก้อนใหม่ อะไรๆ อีกหลายๆ อย่าง ซึ่งนั่นมันทำให้เกิด "เรคคอร์ดสุดท้ายอาจจะไม่ใช่รายการสุดท้ายที่แท้จริง"
    
  มันอาจสร้างปัญหาได้ เช่น
กรณี ทำงานกับตารางเปล่า (เปิดดาต้าเบสของปีใหม่ เป็นต้น)
หรือบ่อยครั้งที่เรคคอร์ดสุดท้ายอาจจะไม่ใช่รายการสุดท้ายที่แท้จริง เพราะเรคคอร์ดสุดท้ายของตาราง มันอาจไม่ได้มาจากการกรอกข้อมูลของเรา แต่มันมาจาก statement หรือคิวรี่ insert
ซึ่งคิวรี่เหล่านั้น มันสามารถมาได้จากหลายๆที่ เช่น เราเขียนเองไว้ในฟังก์ชันไหนๆ ก็ไม่รู้จำไม่ได้ ไว้ในฟอร์มไหนก็ไม่รู้
หรือเกิดจากตอนรวมข้อมูล จาก ฐานข้อมูลก้อนเก่า + ก้อนใหม่ อะไรๆ อีกหลายๆ อย่าง ซึ่งนั่นมันทำให้เกิด "เรคคอร์ดสุดท้ายอาจจะไม่ใช่รายการสุดท้ายที่แท้จริง"
        
    4 @R03566    
        
  
      ขอบคุณค่ะอาจารย์
ทราบล่วงหน้าอย่างนี้แล้ว หนูจะได้คอยระมัดระวัง ในการออกแบบส่วนที่เกี่ยวข้อง เพื่อสกัดไม่ให้เกิดเหตุการณ์ดังกล่าวค่ะ
ขอขอบคุณมากๆอีกครั้งค่ะอาจารย์
    
  ทราบล่วงหน้าอย่างนี้แล้ว หนูจะได้คอยระมัดระวัง ในการออกแบบส่วนที่เกี่ยวข้อง เพื่อสกัดไม่ให้เกิดเหตุการณ์ดังกล่าวค่ะ
ขอขอบคุณมากๆอีกครั้งค่ะอาจารย์
        
    5 @R03573    
        
  
      ต้องขออภัยและขอรบกวนอีกค่ะอาจารย์
หลังได้ปรับแต่งและนำไปประยุกต์ใช้งานจริงๆพบว่า มันไม่ได้แสดงข้อมูลย้อนหลังตามที่ต้องการค่ะ ข้อมูลที่แสดงนั้นมันเป็นข้อมูลลูกค้าคนสุดท้าย แต่ที่ต้องการนั้นคือข้อมูลลูกค้าก่อนจะถึงคนสุดท้ายค่ะ(ถอยหลังไป 1 เร็คคอร์ด) ด้วยความตื่นเต้นดีใจ เลยไม่ได้ดูถี่ถ้วน มาพิจารณาอีกที ก็ตอนใช้งานจริงนี่แหละค่ะ จึงได้ทราบว่าเข้าใจผิดนึกว่าใช่แล้ว
ขอรบกวนอาจารย์ช่วยดูให้หนูใหม่นะคะ
    
  หลังได้ปรับแต่งและนำไปประยุกต์ใช้งานจริงๆพบว่า มันไม่ได้แสดงข้อมูลย้อนหลังตามที่ต้องการค่ะ ข้อมูลที่แสดงนั้นมันเป็นข้อมูลลูกค้าคนสุดท้าย แต่ที่ต้องการนั้นคือข้อมูลลูกค้าก่อนจะถึงคนสุดท้ายค่ะ(ถอยหลังไป 1 เร็คคอร์ด) ด้วยความตื่นเต้นดีใจ เลยไม่ได้ดูถี่ถ้วน มาพิจารณาอีกที ก็ตอนใช้งานจริงนี่แหละค่ะ จึงได้ทราบว่าเข้าใจผิดนึกว่าใช่แล้ว
ขอรบกวนอาจารย์ช่วยดูให้หนูใหม่นะคะ
        
    6 @R03574    
        
  
      Private sub From_load() 
dim idx
idx=dlast("cust","table1")
Precust=dlast("cust","table1","[cust] <> '" & idx & "'")
end sub
    
  dim idx
idx=dlast("cust","table1")
Precust=dlast("cust","table1","[cust] <> '" & idx & "'")
end sub
        
    7 @R03578    
        
  
      ขอบคุณค่ะอาจารย์
อันนี้ใช้ได้ตรงตามที่ต้องการแล้วค่ะ ทดสอบมั่นใจแล้วจึงได้รีบรายงานค่ะ
ต้องขอขอบคุณอาจารย์ที่ให้ความกรุณาอย่างดียิ่งค่ะ
    
  อันนี้ใช้ได้ตรงตามที่ต้องการแล้วค่ะ ทดสอบมั่นใจแล้วจึงได้รีบรายงานค่ะ
ต้องขอขอบคุณอาจารย์ที่ให้ความกรุณาอย่างดียิ่งค่ะ
        
    8 @R06047    
        
    
      ขอบคุณมากครับดีมากๆเลย
sears scratch and dent
    
  sears scratch and dent
      Time: 0.3170s
    
      
		
สมมติว่า คุณใช้ textbox แสดง "ชื่อลูกค้า" ชื่อ tcust
ให้คุณสร้าง textbox อีกตัว ชื่อ PreCust (ไม่ต้องผูกกับฟิลด์ใดๆ)
Private sub From_load()
Precust=dlast("cust","table1")
' หากเปิดฟอร์มขึ้นมาใหม่ เอาค่าชื่อลูกค้าคนล่าสุด จากตาราง
end sub
Private sub tCust_Afterupdate()
Precust.defaultvalue="""" & tcust & """"
' หากมีการทำงานไปบ้างแล้ว มีการบันทึกไปบ้างแล้ว ให้ Precust จดจำชื่อลูกค้าคนล่าสุดที่ถูกเซฟ
End sub