PDA

View Full Version : انتخاب سطر بر اساس شماره ردیف در ODBC



NIK SYSTEM
سه شنبه 22 شهریور 1390, 18:16 عصر
سلام
من برای ارتباط با دیتابیس اکسس از ODBC و ساخت DSN استفاده میکنم !
حالا میخوام بدونم چطور میتونم بر اساس شماره ردیف در جدول ردیفی رو انتخاب کنم !؟
البته برای انتخاب ردیف های اول جدول از این دستور استفاده میشه :
SELECT TOP 5 * FROM tblInfo
این کد پنج سطر اول رو انتخاب میکنه !
حالا من میخوام خط 6 تا 10 رو انتخاب کنم باید چه کنم !؟
یا اصلن فقط خط 8 رو !؟

mazoolagh
شنبه 26 شهریور 1390, 14:38 عصر
باید یک فیلد autonumber به جدولتون اضافه کنین و عبارت where رو براساس مقدار اون به دستور select اضافه کنین:

select * from tblinfo where ID between 6 and 10

dadsara
یک شنبه 27 شهریور 1390, 09:51 صبح
سلام
منظور از اینکه سطر چندم است را بیشتر توضیح بفرمائید
باتوجه به نوع Select و اینکه آیا سورت دارید یا خیر یا شرط می کذارید یا خیر و یا . . . ترتیب قرارگرفتن رکوردها متفاوت است
در هرحال اگر رکورد شما دارای وجه تمایزی نسبت به سایر رکوردها باشد می توانید روی آن شرط قرار دهید .

NIK SYSTEM
شنبه 02 مهر 1390, 23:25 عصر
سلام
ممنون از جوابتون !
جدولی که باهاش کار میکنم خیلی ساده است و فقط میخوام ردیف بعدی یا قبلی سطر انتخاب شده یا چندمین سطر از ابتدای جدول رو در جدول پیدا کنم !
در ضمن من نمیخوام از ستون autonumber استفاده کنم چون اگر ردیفی ازش کم بشه همه چی بهم میریزه !
ردیف های هم تفاوت خاصی ندارند که روشون شرط بزارم !
فقط و فقط شماره ی ردیف از ابتدا !
در ضمن برنامه ی من تحت زبان LUA نوشته شده و تابع ()numrows در luasql برای شماره ی سطر در بانک ها ی اوراکل ، MySQL و PostgreSQL استفاده میشه ولی برای بانک اکسس کار نکرد !
البته تمام دستورات همون دستورات ODBC هستش و تفاوتی نداره !

akbar-kh
پنج شنبه 03 فروردین 1391, 21:49 عصر
دوستان منهم همین مشکل در اسکیوا ل 2000 دارم

mazoolagh
سه شنبه 15 فروردین 1391, 15:01 عصر
اگر بتونین از sql 2005 و به بالا استفاده کنین خیلی بهتر هست چون امکانات درونی برای اینکار رو داره (اصطلاحا بهش paging میگن)
اما برای اکسس و sql 2000 باید از روشهای دیگه استفاده کنین. یکی از روشها به صورت زیر هست که الزاما به یک فیلد autonumber احتیاج داره و مهم نیست که رکوردی هم از میان رکوردها حذف شده باشه:

فرض کنین اسم جدول TBL و اسم فیلد autonumber اون ID و فیلدهای دیگه FLD1,FLD2,FLD3 و ... باشه و شما به رکوردهای Nام تا Mام احتیاج دارین.
1- همه M رکورد اول رو انتخاب میکنین
SELECT TOP M ID FROM TBL ORDER BY ID

2- از این M رکورد (1+M-N) تای آخر رو انتخاب میکنین (K)
SELECT TOP K ID FROM (SELECT TOP M ID FROM TBL ORDER BY ID) ORDER BY ID DESC

3- حالا کافی هست رکوردهایی رو انتخاب کنین که ID اونها در مجموعه انتخاب شده بالا باشه
SELECT ID,FLD1,FLD2,FLD3,... FROM TBL
WHERE ID IN
(SELECT TOP K ID FROM (SELECT TOP M ID FROM TBL ORDER BY ID) ORDER BY ID DESC)
ORDER BY ID