تقدم هذه المقالة بشكل أساسي كيفية عرض ترحيل قاعدة بيانات ADO.
كيف يمكننا ترقيم نتائج الاستعلام لقاعدة البيانات؟ هناك بالفعل العديد من الطرق ، ولكن هناك طريقتان رئيسيتان:
1. اقرأ جميع السجلات في قاعدة البيانات التي تلبي شروط الاستعلام في مجموعة السجلات في وقت واحد وتخزينها في الذاكرة. (رقم الصفحة) و Absolutepage (الصفحة المطلقة) لإدارة معالجة الترحيل.
2. وفقًا لتعليمات العميل ، يجب قراءة العدد المحدد من السجلات وعرضه من السجلات التي تلبي شروط الاستعلام في كل مرة.
الفرق الرئيسي بين الاثنين هو أن الأول يقرأ جميع السجلات في الذاكرة في وقت واحد ثم يصدر الأحكام والتحليل بالتسلسل وفقًا للتعليمات لتحقيق تأثير عرض الصفحات ، بينما يصدر الأخير الأحكام بناءً على التعليمات وتعيين يتم قراءة الرقم المحدد لتلبية شروط الاستعلام.
يمكن أن نشعر بوضوح أنه عندما يصل عدد السجلات في قاعدة البيانات إلى عشرات الآلاف أو أكثر ، فإن كفاءة التنفيذ في الطريقة الأولى ستكون أقل بكثير من الطريقة الثانية ، لأنه عندما يسكّر كل عميل الصفحة ، يجب أن تكون جميع النتائج على الإطلاق يتم نقلها. ومع ذلك ، عندما لا يكون عدد السجلات في قاعدة البيانات على الخادم وعدد الأشخاص عبر الإنترنت في نفس الوقت ، فإن كفاءة التنفيذ للاثنين هي نفسها تقريبًا. يتم كتابة برنامج ASP للطريقة الأولى نسبيًا ، الطريقة الثانية أبسط وواضح.
هنا ، سيأخذ المؤلف برنامج ASP BBS المشترك كمثال لتحليل كيفية تنفيذ وظيفة عرض الصفحات في برنامج BBS. الكثير.
عرض ترقيم الصفحات عندما يصل ADO إلى قاعدة البيانات في الواقع لتشغيل سجلات مجموعة السجلات. لذلك يجب أن نفهم أولاً خصائص وطرق كائن ReordSet:
سمة BOF: يشير المؤشر الحالي إلى المعاملة الأولى إلى مجموعة السجلات.
سمة EOF: يشير المؤشر الحالي إلى المعاملة الأخيرة إلى مجموعة السجلات.
Move Method: انقل المقاييس إلى سجل في مجموعة السجلات.
خاصية Absolutepage: تعيين الموقع الحالي للسجل الذي يقع فيه الصفحة.
PageCount Property: يعرض عدد صفحات البيانات التي يحتوي عليها كائن مجموعة السجلات.
Pagesize Property: يعرض عدد السجلات المعروضة في كل صفحة من كائن مجموعة السجلات.
خاصية RecordCount: يعرض إجمالي عدد السجلات لكائن مجموعة السجلات.
دعونا نلقي نظرة فاحصة على هذه السمات والأساليب المهمة
1. سمات BOF و EOF
عادةً ما نكتب رمزًا في برنامج ASP للتحقق من سمات BOF و EOF لمعرفة موقع مجموعة السجلات التي يشير إليها المؤشر الحالي. الخط هو نطاق كائن مجموعة السجلات.
على سبيل المثال: <٪ إذا لم يكن rs.eof ثم ... ٪>
<٪ إذا لم يكن (rs.bof و rs.eof) ٪>
إذا كان موضع السجل الحالي هو قبل الصف الأول من كائن مجموعة السجلات ، فإن خاصية BOF تُرجع صحيحًا ، وإلا فإنها تُرجع.
إذا كان موضع السجل الحالي هو بعد الصف الأخير من كائن مجموعة السجلات ، فإن خاصية EOF تُرجع صحيحًا ، وإلا فإنها تُرجع.
كل من BOF و EOF خاطئة: يعني أن المؤشر موجود في مجموعة السجلات.
BOF صحيح: يشير المؤشر الحالي إلى السجل الأول إلى مجموعة السجلات. EOF صحيح: يشير المؤشر الحالي إلى السجل الأخير إلى مجموعة السجلات.
كل من BOF و EOF صحيحان: لا يوجد سجل في مجموعة السجلات.
2. نقل طريقة
يمكنك استخدام طريقة الحركة لنقل المقاييس إلى سجل في مجموعة السجلات ، مع بناء الجملة كما يلي:
Rs.Move numRecords ، ابدأ
RS هو متغير كائن ، يشير إلى كائن مجموعة السجلات الذي يريد التحرك عندما يكون موضع السجل الحالي ؛ علامة البداية.
جميع كائنات السجلات تدعم طريقة التحرك. الطريقة ، سيتم إنشاء خطأ.
MoveFirst طريقة: انقل موضع السجل الحالي إلى السجل الأول.
طريقة movelast: انقل موضع السجل الحالي إلى السجل الأخير.
طريقة movenext: انقل موضع السجل الحالي إلى السجل التالي. MovePrevious Method: انقل موضع السجل الحالي إلى السجل السابق.
نقل [n] الطريقة: انقل الفهرس إلى سجل القلم التاسع ، يبدأ n من 0.
3. سمات المطلقة
تقوم خاصية Abssolbage بتعيين عدد الصفحة من الصفحات الموجودة عليها ؛ Pagesize Records). تجدر الإشارة هنا إلى أنه لا يدعم جميع مزودي البيانات هذه الخاصية ، لذا كن حذرًا عند استخدامها.
نفس خاصية الإشارة المطلقة ، تبدأ خاصية Absolutepage بـ 1. إذا كان السجل الحالي هو الصف الأول من مجموعة السجلات ، فإن Absolbge هو 1. يمكن تعيين خاصية Absolutepage للانتقال إلى موضع سجل الصف الأول لصفحة محددة.
4. الممتلكات المطلقة
إذا كنت بحاجة إلى تحديد الموقع الحالي للمقياس في مجموعة السجلات ، فيمكنك استخدام خاصية الإبلاغ المطلقة.
قيمة خاصية الإبلاغ المطلقة هي موضع المؤشر الحالي بالنسبة للمعاملة الأولى ، التي تبدأ من 1 ، أي أن المطلقة للمعاملة الأولى هي 1.
لاحظ أنه عند الوصول إلى Records ، لا يوجد ضمان بأن المسلسلات سوف تظهر في نفس الترتيب في كل مرة.
لتمكين الإشارة المطلقة ، يجب عليك أولاً تعيينه لاستخدام مؤشر المستخدم (مؤشر) ، ورمز ASP كما يلي:
rs2.cursorlocation = 3
5. PageCount Property
استخدم خاصية PageCount لتحديد عدد صفحات البيانات التي يحتوي عليها كائن مجموعة السجل. الصفحة هنا هي مجموعة من سجلات البيانات ، وحجمها يساوي إعداد خاصية Pagesize. . تجدر الإشارة إلى أن جميع مقدمي البيانات لا يدعمون هذه الخاصية.
6. Pagesize Property
خاصية PageSize هي المفتاح لتحديد كيفية الوصول إلى قواعد البيانات. يقوم بتعيين حجم الصفحة وإنشائه ، مما يسمح بنقل خاصية Absolutepage إلى السجل الأول للصفحات المنطقية الأخرى. يمكن تعيين خاصية Pagesize في أي وقت.
7
هذا أيضًا خاصية شائعة ومهمة للغاية. على سبيل المثال: <٪ totle = rs.recordCount ٪>
بعد فهم الخصائص المذكورة أعلاه وطرق كائنات مجموعة السجلات ، دعونا نفكر في كيفية استخدامها لتحقيق الغرض من عرض ترقيم الصفحات لدينا. أولاً ، يمكننا تحديد قيمة خاصية PageSize ، وبالتالي تحديد عدد الصفوف التي تشكل صفحة من مجموعة السجلات ؛ للحصول على الرقم الإجمالي للصفحة المعروض ؛ يبدو الأمر غير معقد للغاية.
لقد قمنا ببناء تطبيق BBS البسيط ، والذي يحتوي على الحقول الخمسة التالية: المعرف ، والرقم التلقائي لكل منشور ؛ وقت النشر. DSN من قاعدة البيانات هي BBS. وضعنا جميع الخطوات في عرض ما بعد الترحيل في عملية تسمى showlist () لسهولة الاتصال. الإجراء كما يلي:
؟
- '---- bbs يعرض بعد الترحيل ---
- <٪ subshowlist () ٪>
- <٪
- PGSZ = 20 'SETTION SWITCH ، حدد عدد المنشورات المعروضة في كل صفحة ، الافتراضي هو 20 منشورًا لكل صفحة
- setConn = server.createObject (adodb.connection)
- setRs = server.createBject (adodb.recordset)
- SQL = SELECT*FromMessageorderByiddesc
- الاستعلام عن جميع المنشورات وترتيبها بترتيب عكسي حسب المعرف
- conn.openbbs
- Rs.Opensql ، Conn ، 1،1
- ifrs.recordCount = 0then
- استجابة. write <p> <center> آسف ، لا توجد معلومات ذات صلة في قاعدة البيانات! </center> </p>
- آخر
- rs.pagesize = cint (pgsz) 'اضبط قيمة خاصية Pagesize
- TOTAL = int (RS.RECORDCOUNT/PGSZ*-1)*-1'Calcyte إجمالي عدد الصفحات التي يمكن عرضها
- Pageno = طلب (Pageno)
- ifpageno = ثم
- Pageno = 1
- آخر
- Pageno = Pageno+1
- Pageno = Pageno-1
- Endif
- ScrollAck = request (ScrollAct)
- ifscrollaction = الصفحة السابقة ثم
- Pageno = Pageno-1
- Endif
- ifscrollaction = الصفحة التالية ثم
- Pageno = Pageno+1
- Endif
- ifpageno <1th
- Pageno = 1
- Endif
- ن = 1
- rs.absolutepage = pageno
- استجابة. write <centre>
- الموضع = rs.pagesize*pageno
- pageBegin = position-rs.pagesize+1
- ifposition <rs.recordcountthen
- PAGEND = الموقف
- آخر
- PAGEND = RS.RECORDCOUT
- Endif
- Response.write <p> <fontcolor = 'navy'> <b> نتائج استعلام قاعدة البيانات: </b>
- استجابة. write (هناك ما مجموعه و rs.recordcount وقطع المعلومات التي تلبي الشروط والعرض و pageBegin &-& pagend &) </font> </p>
- استجابة. write <tablewidth = 600border = 1cellpadding = 4CellSpacing = 0bgColor =#ffffff>
- استجابة. write <trbgColor =#5fb5e2> <FontSize = 2> <td> <b> السمة </b> </td> <td> <b> المستخدمين </b> </td> <td> <b> البريد الإلكتروني </b> </td> <td> <b> التاريخ المنشور </b> </td> </font> <trbgColor =#ffffff>
- dowhilenot (rsisnothing)
- rowcount = rs.pagesize
- dowhilenotrs.eofandrowCount> 0
- IFN = 1th
- استجابة. write <trbgColor =#ffffff>
- آخر
- استجابة. write <TrbgColor =#eeeee>
- Endif
- n = 1-n ٪>
- <td> <spanStyle = font-size: 9pt> <hhref = 'view.asp؟ key = <٪ = rs (id) ٪>'> <٪ = rs (الموضوع) ٪> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <٪ = rs (name) ٪> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <HeRef = mailto: <٪ = rs (email) ٪ >> <٪ = rs (البريد الإلكتروني) ٪> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <٪ = rs (postdate) ٪> </span> </td>
- </r>
- <٪
- rowcount = rowcount-1
- Rs.Movenext
- حلقة
- setRs = rs.nextrecordset
- حلقة
- conn.close
- setRs = لا شيء
- setConn = لا شيء
- ٪>
- </table>
- <formmethod = getAction = list.asp>
- <inputType = HiddenName = pagenovalue = <٪ = pageno ٪ >>
- <٪
- ifpageno> 1th
- Response.write <inputType = submitName = 'ScrollAction'value =' Private page '>
- Endif
- ifrowCount = 0andpageno <> totalThen
- Response.write <inputType = submitName = 'scrollaction'value =' 'الصفحة التالية'>
- Endif
- استجابة. write </form>
- Endif
- ٪>
- <٪ endub ٪>