الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه Mr.ASP في 18 مايو 2002 · 4 رد · 725 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بدون مقدمات أكيد تعرفون أهمية تقسييم النتائج على عدة صفحات.

هناك عدة طرق في قواعد البيانات المختلفة ، و هذه طريقة بسيطة

و نعمل على جميع قواعد البيانات على حد علمي ..

لنبدأ بالفرضيات :

عندك جدول مليان بيانات في عمود معرف أسمه ID

تريد عرض 10 صفوف في الصفحة الواحدة و النتائج

مرتبة حسب العمود OrderByCol تصاعديا ، الجدول

أسمه MyTable

أول صفحة:
Select TOP 10 Col1,Col2,....,ColN From MyTable 
Order By OrderByCol  ASC
--
الصفحة الثانية
Select TOP 10 Col1,Col2,....,ColN From MyTable 
Where ID Not in 
(Select TOP 20 ID From MyTable Where Condition Order By OrderByCol  ASC)
Order By OrderByCol  ASC
--
الصفحة رقم N
Select TOP 10 Col1,Col2,....,ColN From MyTable 
Where ID Not in 
(Select TOP 10*N ID From MyTable Where Condition Order By OrderByCol  ASC)
Order By OrderByCol  ASC

قيمة N :

N= 2,3,4,......,عدد الصفحات

N يجب أن تكون أكبر من واحد

أذا كانت N=1

يجب أن تستخدم

TOP 0

عدد الصفوف في كل صفحة

عدد الصفوف: في جمل ال SQL السابقة يمكنك تغيير الرقم 10 إلى

العدد الي تبي ..

أذا كنت تعمل هذه الطريقة لتقسيم النتائج في لغة برمجة أو سكربت،

تحتاج إلى معرفة عدد البيانات الموجودة لمعرفة عدد الصفحات

هذي سهلة أكيد ..

كود MsSQL لأختبار الطريقة :

use tempdb

Go

If Exists (select name from 
 sysobjects where 
  name=N'pagging' and type='U')
   Drop Table pagging
GO

Create Table pagging( 
id int default 1
)

GO

Declare @N int

Set @N=1

While @N<=100
 begin
  insert into pagging values(@N)
  set @N=@N+1
 end 

GO

Select TOP 10 ID from pagging Where Not ID in
  (Select TOP 50 ID from pagging Order by ID)
Order by ID
#2

السلام عليكم

أخي العزيز

نشكرك كثيرا علي الشرح

و لكن ماذا تقصد بالصفحة ، هل تقرير أكسس ، أم صفحة انترنت

#3

أقصد عرض البيانات في أي بيئة :

أنترنت - برنامج - MSQL في خادم خارج الشبكة او على الأنترنت

الصفحة: عرض عدد محدد من البيانات

#4

الأخ العزيز MR.ASP

أكيد كما تفضلت الكود له أهميته الكبير فعلا فهذا يفيد مثلا عندما تكون هناك فاتورة مبيعات مصممة على نصق صفحة مثلا ولا تستوعب أكثر من 10 أصناف بالفاتورة . فبهذا الكود يمكن أن تبدأ الفاتورة الخرى بعشرة أصناف تالية . فإذا كان كلامي فى محله فلو تكرمت لو ترفق مثال عليه يكون أفضل .

أشرف خليل

#5

مايكفي مثال ال MsSQL

أو تبيه بال Access ؟

بواسطة ال VBA يمكنك عمل ذلك : هذه أتركها للأخوة المتخصصين بهذا المجال

المعادلة العامة :

Select TOP [RecordPerPage] ID from pagging Where  ID Not in
  (Select TOP [(Page-1)*RecordPerPage]  ID from pagging Order by OrderByCol )
Order by OrderByCol

[RecordPerPage] = عدد الصفوف في كل صفحة

Page = رقم الصفحة أبدا من الصفحة#1

هذا الموضوع مغلق.

مواضيع مشابهة