View Full Version : سوال: راهنمایی برای نمایش تعداد زیاد رکورد
scorpion_sincity
یک شنبه 29 خرداد 1390, 21:24 عصر
با سلام و خسته نباشید خدمت تمام دوستان
من تعداد بسیار زیاد رکورد در دیتابیس دارم حدود 85هزار رکورد
شما چه پیشنهادی دارید که این اطلاعات رو نمایش بدم که کاربر گیج نشه و راحت بتونه با اطلاعات کار کنه؟؟
ممنون
zarrinnegar
دوشنبه 30 خرداد 1390, 00:38 صبح
با سلام و خسته نباشید خدمت تمام دوستان
من تعداد بسیار زیاد رکورد در دیتابیس دارم حدود 85هزار رکورد
شما چه پیشنهادی دارید که این اطلاعات رو نمایش بدم که کاربر گیج نشه و راحت بتونه با اطلاعات کار کنه؟؟
ممنون
بهترین راه حل اینه که بصورت صفحه بندی کار کنی
در هر حالت کاربر نمیتونه اطلاعات 25 تا 30 رکورد رو همزمان ببینه
بخاطر این صفحه بندی مناسب ترینه
لود دستا هم از دیتابیس راحت تره
حالا اگه نمیتونی صفحه بندی کنی بگو تا راه حل رو بگم
scorpion_sincity
دوشنبه 30 خرداد 1390, 00:49 صبح
نمی خوام تمام 5000تا رو ببینه ولی استفاده از دیتاگرید ویوو خیلی جلوه جالبی نداره
اگه لطف کنید بگید چطور صفحه بندی کنم ممنون می شم
zarrinnegar
دوشنبه 30 خرداد 1390, 01:04 صبح
نمی خوام تمام 5000تا رو ببینه ولی استفاده از دیتاگرید ویوو خیلی جلوه جالبی نداره
اگه لطف کنید بگید چطور صفحه بندی کنم ممنون می شم
پس خوب دقت کن
این نمونه برنامه رو برات قرار میدم ولی باید بجای اسامی فیلد ها اسامی فیلد های جدول خودت رو بزاری
تا حالا که در نوع خودش بی نظیر بوده امیدوارم بدرت شما هم بخوره
1 - یک پروسیجر ایجاد میکنی توی sql
create
PROCEDURE [dbo].[sp_PagedItem]
(
@Page
int,
@RecsPerPage
int
)
AS
در ادامه این پروسیجر یک جدول از نوع temp میسازی با فیلدهای همان جدول خودت
CREATE
TABLE #TempItems
(
ID
int IDENTITY,
,...
,...
(
بجای ... فیلدها رو تعریف میکنی و فیلد id که در این مثال گفته شده باید در ابتدار فیلد هات تعریف شه
بعد با استفاده از دستور insert into رکوردهای جدولت رو به جدول temp وارد میکنی
INSERT
INTO #TempItems
)نام فیلد, نام فیلد,...
(
select
نام فیلد , نام فیلد , ...
from myTable
در اینجا اسامی فیلدها را قرار میدهی و بجای نام mytable از نام جدول خودت استفاده میکنی
سپس دستورات زیر را در انتهای پروسیجر اضافه میکنی
DECLARE
@FirstRec int, @LastRec int
SELECT
@FirstRec = (@Page - 1) * @RecsPerPage
SELECT
@LastRec = (@Page * @RecsPerPage + 1)
SELECT
*,
MoreRecords
=
(
SELECT COUNT(*)
FROM #TempItems TI
WHERE TI.ID >= @LastRec
)
FROM
#TempItems
WHERE
ID > @FirstRec AND ID < @LastRec
بعد پروسیجر را ذخیره میکنی و بعد از آن استفاده میکنی
exec sp_PagedItem 2,500
عدد اول (2) شماره صفحه و عدد دوم (500) تعداد رکورد هر صفحه را مشخص میکند
بعد در برنامه میتونی دکمه قرار بدی بعد این پروسیجر رو مدیریت کنی که بره به صفحه چند و چند تایی رکورد ها رو بیاره
با زدن هر دکمه صفحه بعدی این پروسیجر رو اجرا کن و نتیج رو توی یک دیتاگرید نمایش بده
با این روش میتونی میلیونها رکورد رو با سرعت بالا نمایش بدی
در واقع این روشی است که گرید وب داره انجام میده و مایکروسافت هم توی نسخه 2011 sql این قابلیت رو اضافه کرده
امیدوارم بتونی استفاده کنی
مشکلی بود اعلام کن
zarrinnegar
دوشنبه 30 خرداد 1390, 01:27 صبح
نمی خوام تمام 5000تا رو ببینه ولی استفاده از دیتاگرید ویوو خیلی جلوه جالبی نداره
اگه لطف کنید بگید چطور صفحه بندی کنم ممنون می شم
این هم خلاصه
create PROCEDURE [dbo].[sp_PagedItem]
(
@Page int,
@RecsPerPage int
)
AS
CREATE
TABLE #TempItems
(
ID intIDENTITY,
,
,
,
)
INSERT
INTO #TempItems
(,
,
)
SELECT,,FROM myTable
DECLARE
FirstRec int, @LastRec int
SELECT
@FirstRec =(@Page - 1)* @RecsPerPage
SELECT
@LastRec =(@Page * @RecsPerPage + 1)
SELECT
*,
MoreRecords
=
(
SELECTCOUNT(*)
FROM #TempItems TI
WHERE TI.ID >= @LastRec
)
FROM
#TempItems
WHERE
ID > @FirstRec AND ID < @LastRec
scorpion_sincity
دوشنبه 30 خرداد 1390, 11:43 صبح
ایول آقا خیلی خیلی مرسی
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.