Advanced Search

المحرر موضوع: على بركة الله سلسلة دروس تصميم المواقع  (زيارة 15300 مرات)

0 الأعضاء و 1 ضيف يشاهدون هذا الموضوع.

سبتمبر 09, 2002, 11:10:41 مساءاً
رد #60

أبو عبدالرحمن

  • عضو متقدم

  • ****

  • 718
    مشاركة

    • مشاهدة الملف الشخصي
على بركة الله سلسلة دروس تصميم المواقع
« رد #60 في: سبتمبر 09, 2002, 11:10:41 مساءاً »
درس إضافي..    قام بكتابة الدرس: Mr.ASP

تقسيم النتائج على عدة صفحات

في قواعد البيانات الكبيرة يصعب عرض البيانات في صفحة واحدة، و لهذا يجب تقسيم النتائج على عدة صفحات. في ال ASP هناك عدة طرق لعمل ذلك.

طريقة AbsolutePage


------------------------------

ملف pagging1.asp في الملف المرفق .  pagging1+2.asp
تعتبر هذه الطريقة الأكثر كلفة لاعتمادها على جهاز الزبون لحفظ البيانات مؤقتا ..
في الكود :
Code Sample
RS.CursorLocation=adUseClient

هذه هي الجملة المكلفة و هذه الطريقة لا تعمل بدون استخدام قيمة adUseClient
CursorLocation القيمة الافتراضية هي adUseServer..
CursorLocation : مكان حفظ البيانات المؤقت ..
و سبب آخر يبطئ عملية جلب البيانات هي استخدام Record Set (يمكن تعريبها
كصندوق البيانات) المخصصة لاستخدامات سطح المكتب و الشبكات ، و ترك نوع
adOpenForwardOnly المخصص لاستخدامات الويب ...

طريقة GetRows

-----------------------------------

ملف pagging2.asp في الملف المرفق .
من أسرع الطرق و كود جلب البيانات بسطر واحد فقط MyDate=Rs.GetRows()
تعطي هذه الدالة مصفوفة ذات أتجاهين MyData(ColumnID,RowID)
ColumnId = رقم العمود
RowID = رقم الصف

طريقة Move و GetRows


-------------------------------------

هذي هي الطريقة الأمثل لجلب البيانات بال ASP
الكود:
Code Sample
Const PageSize=10
Set RS=ADO.Execute(SQL,NumOfRecAff)
TotalPages=Ceil( NumOfRecAff / PageSize)
RS.Move (Page-1) * PageSize
MyData=RS.GetRows(PageSize)



هذه الطريقة لا تعمل مع قواعد بيانات أكسس لسبب واحد المتغير NumOfRecAff
في دالة Execute تأخذ القيمة -1 و في قواعد البيانات الأخرى مثل MySQL
تأخذ عدد صفوف البيانات الناتجة، و يمكن تعديل الكود ليعمل مع أي قاعدة بيانات ،
مثلا في أكسس ما عليك سوى أيجاد عدد السجلات باستعلام مثل
select count(*) from TableName Where ColunmName=??
تعتبر هذه الطريقة الأمثل و الأفضل لجلب البيانات بال ASP لماذا؟
لأنها تأخذ العدد المطلوب من البيانات PageSize لعرضها ،
و تعمل على جميع قواعد البيانات..

طريقة خاصة بقواعد بيانات MySQL


--------------------------------

للقواعد بيانات MySQL طريقة خاصة لعرض النتائج على عدة صفحات . تستخدم دالة Limit M,N
M=الصفحة الحالية الصفحة الأولى = 0 .
N= عدد الصفوف في كل صفحة .

Code Sample
Const PageSize=10
Page=Request("Page")
If Page="" Or Not isNumeric(Page) Then Page=1
If Page<0 Then Page=0
Page=Page-1
SQL1="select count(*) From TableName Where Condition"

Set RS=ADO.Execute(SQL1)
NumOfRecAff=RS(0)
Set RS=Nothing
TotalPages=Ceil( NumOfRecAff / PageSize)
If Page>TotalPages Then Page=TotalPages
SQL2="select * From TableName Where Condition Limit " & Page & "," & PageSize
Set RS=ADO.Execute(SQL2)




إضافة: أنواع صناديق البيانات

-----------------------------
Code Sample
RS.Open SQL,ADO,RecordSetCursorType,LockType



RecordSetCursorType:عدد صحيح يحدد نوع ال RecordSet المستخدم
قيم RecordSetCursorType:
adOpenForwardOnly : أسرع الأنواع و أخفها التصفح في اتجاه واحد فقط ..
adOpenStatic : نسخة ثابتة من البيانات و تصفح البيانات في جميع الاتجاهات
adOpenKeyset : فتح نسخة من البيانات و مشاهدة المتغيرات ماعدا البيانات المدخلة
حديثا و تصفح البيانات في جميع الاتجاهات
adOpenDynamic : فتح نسخة ترى فيها جميع التغيرات التي تطرأ على البيانات من
تحديث و حذف و أدخال
القيم الرقمية:

Code Sample
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3



تجد هذه الثوابت و العديد منها في ملف أسمة adovbs.inc ( نسخة الفي بي سكربت )
و adojs.inc ( نسخة الجافا سكربت ) ..

قام بكتابة الدرس: Mr.ASP

أبريل 21, 2006, 12:40:35 مساءاً
رد #61

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
على بركة الله سلسلة دروس تصميم المواقع
« رد #61 في: أبريل 21, 2006, 12:40:35 مساءاً »
دروس أرفعها للفائدة
هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها