قاعدة البيانات الخلفية هي Access، وبعد استخدامها لمدة عام، قال العميل إن فتح الواجهة كان بطيئًا للغاية. وبعد التحقق من قاعدة البيانات، وجدت أن هناك أكثر من 50000 سجل في جدول البيانات، وحاولت نسخ السجلات إلى 10 آلاف السجلات، وفتح الواجهة بطيء جدًا، وتقليب الصفحات له نفس المشكلة. الطريقة التي اعتمدتها هي تحميل 20 سجلًا في كل صفحة، وكتابتها في حلقة وعرضها في الجدول، ثم تعيين أربعة مفاتيح لتقليب الصفحات. لعرض البيانات، ولكن المشكلة هي أنه على الرغم من أنه يتم تحميل عشرين سجلاً فقط في الصفحة في كل مرة، إلا أنه يجب تحميل جميع السجلات مرة واحدة في كل مرة يتم فيها فتح مجموعة السجلات، لذا فهي بطيئة.
الحل الأول:
1. قم بتعيين حقل الزيادة التلقائية والحقل هو INDEX.
2. نظرًا لأنه ACCESS، لا يمكن استخدامه إلا لترحيل الصفحات الأمامية. والغرض من حقل الزيادة الذاتية هو تحقيق وظيفة الترحيل.
1> سجل آخر قيمة تمت زيادتها ذاتيًا لصفحة المستخدم السابقة، مثل M.
2> الصفحة التالية، خذ قيمة البداية للصفحة.M+1، قيمة النهاية: M+1+1.5*PAGESIZE (ملاحظة: بما أن قاعدة البيانات ستحتوي على عمليات إضافة وحذف، فيجب أن يكون هناك معامل لحجم الصفحة يمكنك تخصيص معامل كبير قدره 1 وفقًا للحالة.
3> تأخذ حلقة الواجهة الأمامية شريط PAGESIZE الأول من RS، وتكتبه في RS جديد، وترجعه.
ملحوظة: RS الجديد هو RS بدون اتصال.
الحل الثاني:
مائة ألف سجل ليس الحد الأقصى لقاعدة بيانات Access. علاوة على ذلك، طريقتك ليست ترحيلًا بالمعنى الحقيقي (يجب استخدام خصائص PageSize وAbsolutePage).
كود فب سكريبت
انسخ رمز الكود كما يلي:
مجموعة rs = ADODB.Recordset الجديد
rs.CursorLocation = adUseClient
rs.PageSize = 20
rs.Open حدد * من الضيف، iConc، adOpenKeyset، adLockOptimisticlng
الصفحات = rs.PageCount
الصفحة الحالية = 1
تحتوي مجموعة السجلات المفتوحة في هذا الوقت على 20 سجلًا فقط.
عند تقليب الصفحات:
انسخ رمز الكود كما يلي:
إذا كان lngCurrentPage <lngPages إذن
lngCurrentPage = lngCurrentPage + 1
rs.AbsolutePage = lngCurrentPage
نهاية إذا