ขอบคุณครับ
ขอสอบถามเพิ่มเติม SELECT @@IDENTITY as ID มันจะเอา Autonumber ที่ถูกสร้างล่าสุดในฐานข้อมูลใช้ไหมครับ
ใช่ครับ
ถ้าหลังจากโค๊ดชุดที่ 3 มีการเพิ่ม Auto number ใหม่ในตาราง tbl_1 หรือตารางอื่น ๆ ในไฟล์อีก ถ้าใช้ Lastid จะยังได้ค่าเท่ากับ AutoNumber ที่ถูกสร้างใน โค๊ดชุด 1 เหมือนเดิมไหมครับ
เหมือนเดิมครับ เพราะถูกเก็บในตัวแปร LastID ไปแล้ว แต่ถ้าสั่ง LastID = CurrentDb.OpenRecordset("SELECT @@IDENTITY as ID")("ID") อีกที ก็จะได้ค่า Autonumber ที่ถูกใช้สุดท้ายใหม่อีกที
อีก 1 ข้อสอบถาม เมื่อเกิด การ Rollback Auto number มันข้ามเลขไปครับ ใช้วิธีการใดเพื่อให้ Rollback และไม่ข้ามเลขครับ
ถ้ามี ID 1,2,3 บันทึกไว้แล้ว และต่อมามีการ Rollback หลายครั้งจนทำให้ ID ต่อไปจะเป็นเลข 11 สิ่งที่ทำได้ก็คือ ต้องหาว่า ID สุดท้ายคือเลขอะไรด้วย DMax() แล้วพอจะเพิ่มเรคอร์ดใหม่ ก็ใช้ SQL ที่กำหนดค่าฟิลด์ ID โดยตรงไปเลย เช่น INSERT INTO (ID, ....) VALUES(เลขสุดท้ายจาก DMax() บวกด้วย 1, ...) ดังนั้นจะเห็นว่า ถ้าต้องการคุณสมบัติไม่ให้มีเลขข้าม ก็ไม่ควรใช้ฟิลด์ Autonumber ครับ ให้เปลี่ยนเป็นประเภท Number-Long Integer แล้วใช้ DMax() + 1 นี่แหล่ะ เป็นตัวกำหนดค่าตัวต่อไปแทน