สร้างTextbox ให้แสดงข้อมูลย้อนหลัง1Record
กระทู้เก่าบอร์ด อ.Yeadram

 2,209   8
URL.หัวข้อ / URL
สร้างTextbox ให้แสดงข้อมูลย้อนหลัง1Record

ขอความช่วยเหลืออีกแล้วค่ะอาจารย์ ความต้องการหนูมีดังนี้นะคะ
คือหนูอยากสร้าง 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

1 @R03547
มีวิธีง่ายๆ อยู่อย่าง แต่มันไม่รัดกุมมากนัก ช่องโหว่อาจจะเกิดได้ช่วง เปิดฟอร์มใหม่ แต่คิดว่าพอจะช่วยได้

สมมติว่า คุณใช้ textbox แสดง "ชื่อลูกค้า" ชื่อ tcust
ให้คุณสร้าง textbox อีกตัว ชื่อ PreCust (ไม่ต้องผูกกับฟิลด์ใดๆ)


Private sub From_load()
Precust=dlast("cust","table1")
' หากเปิดฟอร์มขึ้นมาใหม่ เอาค่าชื่อลูกค้าคนล่าสุด จากตาราง
end sub

Private sub tCust_Afterupdate()
Precust.defaultvalue="""" & tcust & """"
' หากมีการทำงานไปบ้างแล้ว มีการบันทึกไปบ้างแล้ว ให้ Precust จดจำชื่อลูกค้าคนล่าสุดที่ถูกเซฟ
End sub
2 @R03553
ขอบคุณมากค่ะอาจารย์ ใช้ได้เรียบร้อยดีเลยค่ะ
แต่ที่ท่านแสดงความเป็นห่วงว่า " แต่มันไม่รัดกุมมากนัก ช่องโหว่อาจจะเกิดได้ช่วง เปิดฟอร์มใหม่ " ตรงนี้อาจารย์ช่วยอธิบายเพิ่มเติมให้หน่อยนะคะ ว่ามันจะเกิดอะไรขึ้นหรือคะ คือหนูยังไม่พบสิ่งผิดปกติใดๆค่ะ
3 @R03563
คำสั่ง dlast() ในเหตุการณ์ form_load ไงครับ
มันอาจสร้างปัญหาได้ เช่น
กรณี ทำงานกับตารางเปล่า (เปิดดาต้าเบสของปีใหม่ เป็นต้น)

หรือบ่อยครั้งที่เรคคอร์ดสุดท้ายอาจจะไม่ใช่รายการสุดท้ายที่แท้จริง เพราะเรคคอร์ดสุดท้ายของตาราง มันอาจไม่ได้มาจากการกรอกข้อมูลของเรา แต่มันมาจาก statement หรือคิวรี่ insert
ซึ่งคิวรี่เหล่านั้น มันสามารถมาได้จากหลายๆที่ เช่น เราเขียนเองไว้ในฟังก์ชันไหนๆ ก็ไม่รู้จำไม่ได้ ไว้ในฟอร์มไหนก็ไม่รู้
หรือเกิดจากตอนรวมข้อมูล จาก ฐานข้อมูลก้อนเก่า + ก้อนใหม่ อะไรๆ อีกหลายๆ อย่าง ซึ่งนั่นมันทำให้เกิด "เรคคอร์ดสุดท้ายอาจจะไม่ใช่รายการสุดท้ายที่แท้จริง"
4 @R03566
ขอบคุณค่ะอาจารย์

ทราบล่วงหน้าอย่างนี้แล้ว หนูจะได้คอยระมัดระวัง ในการออกแบบส่วนที่เกี่ยวข้อง เพื่อสกัดไม่ให้เกิดเหตุการณ์ดังกล่าวค่ะ

ขอขอบคุณมากๆอีกครั้งค่ะอาจารย์
5 @R03573
ต้องขออภัยและขอรบกวนอีกค่ะอาจารย์
หลังได้ปรับแต่งและนำไปประยุกต์ใช้งานจริงๆพบว่า มันไม่ได้แสดงข้อมูลย้อนหลังตามที่ต้องการค่ะ ข้อมูลที่แสดงนั้นมันเป็นข้อมูลลูกค้าคนสุดท้าย แต่ที่ต้องการนั้นคือข้อมูลลูกค้าก่อนจะถึงคนสุดท้ายค่ะ(ถอยหลังไป 1 เร็คคอร์ด) ด้วยความตื่นเต้นดีใจ เลยไม่ได้ดูถี่ถ้วน มาพิจารณาอีกที ก็ตอนใช้งานจริงนี่แหละค่ะ จึงได้ทราบว่าเข้าใจผิดนึกว่าใช่แล้ว
ขอรบกวนอาจารย์ช่วยดูให้หนูใหม่นะคะ
6 @R03574
Private sub From_load()
dim idx
idx=dlast("cust","table1")
Precust=dlast("cust","table1","[cust] <> '" & idx & "'")
end sub
7 @R03578
ขอบคุณค่ะอาจารย์
อันนี้ใช้ได้ตรงตามที่ต้องการแล้วค่ะ ทดสอบมั่นใจแล้วจึงได้รีบรายงานค่ะ
ต้องขอขอบคุณอาจารย์ที่ให้ความกรุณาอย่างดียิ่งค่ะ
8 @R06047
ขอบคุณมากครับดีมากๆเลย

sears scratch and dent
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3348s