ملخص
---- الآن هناك العديد من المقالات التي تستخدم ASP لتحقيق ترقيم ترميم ديناميكي. ومع ذلك ، في التطبيقات الهندسية الفعلية ، تكون كمية البيانات الأصلية كبيرة جدًا ، وكانت معالجة البيانات الأصلية بطيئة نسبيًا.
--هناك طريقتان رئيسيتان لحل المشكلات المذكورة أعلاه: أحدهما هو إصلاح شروط الاستعلام نسبيًا ، استخدم حالة استعلام ثابتة نسبيًا لمعالجة البيانات الأصلية ، وإنشاء مكتبة صغيرة للبيانات. إلى الوسط. على الرغم من أن هذا سيؤدي إلى تحسين أداء البرنامج ، إلا أنه سيؤثر على مرونة البرنامج ، ويحتاج الخادم إلى معالجة البيانات الأصلية والحفاظ عليها بانتظام. طريقة أخرى هي حفظ الاستعلام على جانب الخادم. على الرغم من أن هذا لا يمكن أن يحسن أداء الاستعلام ، إلا أن محطة الخادم يمكن أن تستجيب بسرعة عند استبدال العميل. إن إدراك الطريقة الأولى بسيطة نسبيًا.
طريقة التنفيذ
---- احفظ نتائج الاستعلام على الخادم في صفيف ديناميكي ، أي أن صفيف ديناميكي ثنائي الأبعاد أثناء عملية SATE_ONSTART. عندما يتلقى الخادم التطبيق المقدم من العميل ، فإن القاضي الأول هو ما إذا كان الطلب هو استفسارات مشروطة أو تغيير في الصفحة. الصفيف.
تنفيذ البرنامج:
---- 1. تحديد صفيفان أبعاد ومتغيرات أخرى
| ما يلي هو جزء الرمز: Sub Session_onstart Dim TempDB () redim الحفاظ على tempdb (1،2) الجلسة ("storedarray") = tempdb حدد مجموعة جلسة الجلسة ("ipageCount") = 0 الجلسة ("ipageno") = 0 ... ... نهاية الفرعية |
---- 2. استدعاء إجراء التخزين لإرجاع البيانات
| ما يلي هو جزء الرمز: sub getRcordset (strbbmc ، strkssj ، strzzsj ، strnodecode ، strfxzl) المعلمات هي أسماء التقارير والقيود المختلفة حدد CASE StrbBMC حالة "نموذج ملخص المعاملة" strcnn = "provider = msdasql ؛ dsn = sqldb ؛ UID = SA ؛ تعيين OBJCNN = server.createObje ("Adodb.Connection") OBJCNN.CommandTimeout = 9999999 objcnn.connectionTimeout = 99999999 objcnn.cursorlocation = aduseclient objcnn.open strcnn 'افتح الاتصال تعيين OBJRS = server.createBject ("Adodb.Recordset") objrs.pagesize = ipagesize objrs.cachesize = ipagesize Objrs.Open "sszhatmlog '" و Strkssj & "' '، "" "" " "" "" " adlockreadonly ، 1 قم بإجراء إجراء التخزين مرة أخرى إلى نتائج الاستعلام ... ... نهاية الفرعية |
---- 3. احفظ نتائج الاستعلام إلى الصفيف الديناميكي
| ما يلي هو جزء الرمز: Sub SavereCordset () إذا كان objrs.eof = false ثم objrs.movelast الجلسة ("irowcount") = objrs.rcordcount الجلسة ("ifieldCount") = objrs.fields.count الجلسة ("ipageCount") = objrs.pageCount Redim Preserve Temparray (الجلسة ("irowcount") ، الجلسة ("ifieldCount")) "Temparray عبارة عن صفيف ديناميكي ثنائي الأبعاد ، حدد حجمه وفقًا لحجم مجموعة السجلات objrs.movefirst icount = 0 افعل بينما objrs.eof = خطأ icount = icount + 1 لأني = 1 إلى الجلسة ("ifieldCount") Temparray (icount ، i) = objrs.fields.item (أنا -1) التالي objrs.movenext حلقة جلسة ("storedarray") = Temparray objrs.close آخر الجلسة ("ipageCount") = 0 إنهاء إذا نهاية الفرعية |
---- 4. عرض محتوى السجل
| ما يلي هو جزء الرمز: Sub Showrecord () ... ... localray = جلسة ("storedarray") ishowtotal = (ipageCurrent -1) * ipagesize + 1 irowloop = 1 افعل لماذا irowloop <= ipagesize و ishowtotal <= الجلسة ("irowcount") استجابة. write ("<ter>") لأني = 1 إلى الجلسة ("ifieldCount") استجابة. write ("<td>" & localray (Ishowtotal ، i)) بعد ذلك استجابة. write ("< /tr>) ishowtotal = ishowtotal + 1 IrowLoop = ايروبلوب + 1 حلقة استجابة. write ("< /table>") إذا كان ipageCurrent <> 1 و ipageCurrent <الجلسة ("ipageCount") ثم ٪> <ster> <a href = "db_pag.asp؟ page = <٪ = IpageCurrent -1 ٪> "> الصفحة السابقة < /a> <a href = "db_pag.asp؟ page = <٪ = ipageCurrent + 1 ٪>"> الصفحة الأخيرة < /a> </center> <٪ آخر إذا كان ipageCurrent <> 1 ثم ٪> <ster> <a href = "db_pag.asp؟ page = <٪ = ipageCurrent -1 ٪> "> الصفحة السابقة < /a> </center> <٪ إنهاء إذا إذا كان ipageCurrent <session ("ipageCount") ٪> <Center> <a href = "db_pag.asp؟ page = <٪ = ipageCurrent + 1 ٪> "> الصفحة اللاحقة < /a> </center> <٪ إنهاء إذا إنهاء إذا نهاية الفرعية |