View Full Version : نویگیتور
iran400
دوشنبه 16 خرداد 1384, 22:57 عصر
با سلام
یک سوال دیتابیسی برایم پیش آمده، مشکلی که شاید 4- 5 سال پیش برای شما پیش آمده باشد.
قضیه از این قرار است که برنامه بنده به قسمت سرچ رسیده است، بنده یک کوئری زدهام و میخواهم جواب را در تعداد مشخص نمایش دهم؛ مثلاً 20تا،20تا رکورد.
در ضمن رکوردها فیلد ID ندارند و اگر هم داشتند بعد از کوئری ترتیب خاصی ندارند.
20 تای اول را میتونم نمایش بدم اما تو بقیش گیر کردهام!
ایران 1400
majid_afra222
دوشنبه 16 خرداد 1384, 23:25 عصر
سلام
لطفا زبان و محیط استفاده رو مشخص کن.
AminSobati
دوشنبه 16 خرداد 1384, 23:46 عصر
http://www.barnamenevis.org/forum/viewtopic.php?t=21876
iran400
چهارشنبه 18 خرداد 1384, 14:42 عصر
با سلام
محیط asp میباشد زبان هم vb
البته فکر نکنم چندان تفاوتی داشته باشد.
بنده به آدرسی که جناب AminSobati گذاشته بودم رفتم ولی باز هم به نتیجهای نرسیدم.
ایران 1400
majid_afra222
چهارشنبه 18 خرداد 1384, 16:43 عصر
سلام
از این جهت زبان رو پرسیدم چون در asp.net امکان paging در درون امکانات کامپوننتهای خودش وجود داره.
دوم اینکه رکورد ست رو بخون٬یه پارامتر اضافی برای صفحه در نظر بگیر (که شماره فیلدهای نمایش داده شده رو نگهداره) بار اول که فرم رو صدا می کنی بدون اون پارامتر فراخوانی کن٬ رکورد ست رو بخون و رکورد ست ایجاد شده رو تا تعداد خاصی که می خوای بخون و پارامتر اضافی رو مقداردهی کن.
دکمه های next و back رو که میزنه اون پارامتر رو هم با توجه به شماره تعداد رکوردهای نمایش داده به فرم ارسال کن و دیگه پرس و جو رو اجرا نکن و فقط رکورد ست رو بسمت جلو پیمایش کن و نمایش بده.
AminSobati
جمعه 20 خرداد 1384, 16:45 عصر
بنده به آدرسی که جناب AminSobati گذاشته بودم رفتم ولی باز هم به نتیجهای نرسیدم.
یعنی دقیقا مشکل کجا بود؟
iran400
سه شنبه 21 تیر 1384, 16:57 عصر
سلام
بنده یک روش به ذهنم رسیده که شاید برای شما هم جالب باشد
البته بنده sql زیاد کار نکردهام و به همین دلیل نمیتوانم درست آن را به دستورات sql تبدیل کنم.
یک پروسیجر تعریف میکنم که دو ورودی Value و Row بگیرد.
Value = تعداد روکوردهایی که میخواهیی برگردد
Row= ردیفی که میخواهی برگردد.
Tbl = Select top (Value * Row) * from news order by id
Select top Value from Tbl order by id desc
مثال
Value = 10
Row = 4
Tbl = Select top (Value * Row) * from news order by id
Select top Value from Tbl order by id desc
اگر این روش قابل استفاده باشد چجوری باید اون را به sql تبدیل کنم.
AminSobati
سه شنبه 21 تیر 1384, 22:45 عصر
در SQL Server 2000 این روش قابل استفاده نیست چون Top متغیر قبول نمیکنه و یک مقدار ثابت باید بهش داد (مگر اینکه Dynamic T-SQL استفاده کنین). ولی در SQL Server 2005 این امکان وجود داره.
از طرفی در نسخه جدید برای Paging روشهای بسیار ایده آل هست که از Top استفاده نخواهید کرد!
(ولی در روشی که در این آدرس قرار دادم:
http://www.barnamenevis.org/forum/showthread.php?t=17660
کاملا این کار انجام شدنیه و ازش استفاده میشه، تعجب میکنم که... )
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.