ฐานข้อมูลส่วนหลังคือ Access หลังจากใช้งานมาหนึ่งปีลูกค้าบอกว่าการเปิดอินเทอร์เฟซช้ามาก หลังจากตรวจสอบฐานข้อมูล ฉันพบว่ามีมากกว่า 50,000 บันทึกในตารางข้อมูล ฉันพยายามคัดลอกบันทึกเป็น 10 บันทึกนับพัน การเปิดอินเทอร์เฟซช้ามากและการเปลี่ยนหน้าก็มีปัญหาเดียวกัน วิธีที่ฉันนำมาใช้คือโหลด 20 บันทึกต่อหน้า เขียนเป็นวงวนแล้วแสดงไว้ในตาราง จากนั้นตั้งค่าปุ่มเปลี่ยนหน้าสี่อัน เพื่อดูข้อมูลได้แต่ปัญหาคือถึงแม้จะโหลดเข้าเพจได้เพียงยี่สิบเรคคอร์ดในแต่ละครั้งแต่ก็ต้องโหลดเรคคอร์ดทั้งหมดพร้อมกันทุกครั้งที่เปิดชุดบันทึกจึงช้า
แนวทางแก้ไขที่หนึ่ง:
1.ตั้งค่าช่องเพิ่มอัตโนมัติ และช่องเป็น INDEX
2. เนื่องจากเป็น ACCESS จึงสามารถใช้ได้เฉพาะกับเพจส่วนหน้าเท่านั้น วัตถุประสงค์ของฟิลด์แบบเพิ่มตัวเองคือเพื่อให้ทราบถึงฟังก์ชันเพจ
1> บันทึกค่าที่เพิ่มขึ้นเองล่าสุดของหน้าก่อนหน้าของผู้ใช้ เช่น M
2> หน้าถัดไป รับค่าเริ่มต้นของ page.M+1 ค่าสิ้นสุด: M+1+1.5*PAGESIZE (หมายเหตุ: เนื่องจากฐานข้อมูลจะมีการดำเนินการบวกและการลบ จึงควรมีค่าสัมประสิทธิ์สำหรับขนาดหน้า คุณสามารถปรับแต่งค่าสัมประสิทธิ์ขนาดใหญ่เป็น 1 ได้ตามสถานการณ์
3> ลูปส่วนหน้าใช้แถบ PAGESIZE แรกของ RS เขียนลงใน RS ใหม่ และส่งคืน
หมายเหตุ: RS ใหม่เป็น RS ไร้การเชื่อมต่อ
แนวทางที่สอง:
หนึ่งแสนบันทึกไม่ใช่ขีดจำกัดของฐานข้อมูล Access ยิ่งไปกว่านั้น วิธีการของคุณไม่ใช่การเพจตามความหมายที่แท้จริง (ควรใช้คุณสมบัติ PageSize และ AbsolutePage)
รหัส VBScript
คัดลอกรหัสรหัสดังต่อไปนี้:
ตั้ง rs = ADODB.Recordset ใหม่
rs.CursorLocation = adUseClient
rs.PageSize = 20
rs.Open เลือก * จากแขก, iConc, adOpenKeyset, adLockOptimisticlng
หน้า = rs.PageCount
lngCurrentPage = 1
ชุดบันทึกที่เปิดในเวลานี้มีเพียง 20 รายการเท่านั้น
เมื่อพลิกหน้า:
คัดลอกรหัสรหัสดังต่อไปนี้:
ถ้า lngCurrentPage < lngPages จากนั้น
lngCurrentPage = lngCurrentPage + 1
rs.AbsolutePage = lngCurrentPage
สิ้นสุดถ้า