PDA

View Full Version : سوال: به دست آوردن رکورد بعدی ازsql در #C



aminaltavista
دوشنبه 10 مهر 1391, 23:59 عصر
سلام

دستوری میخو ام بنویسم که رکورد بعدی تو دیتابیس رو برگردونه با فرض این که الان تو رکورد 6 هست 7 رو برگردونه! یا اگر این که رکورد بعد از 6 10 هست اون رو برگردونه (از لحاظ id که خودش تولید میشه : رفع ابهام )آیا برا انجام این کار مورد خاصی شما سراغ دارید؟ به وسیله دستورات قدرتمند sql حله؟:متفکر:

omidamiry
سه شنبه 11 مهر 1391, 00:13 صبح
بانکو سلکت میکنی بعد به تعداد count که داره فور یا وایل میذاری و هرموقع به محل مورد نظر رسید کارتو انجام میدی

aminaltavista
سه شنبه 11 مهر 1391, 00:27 صبح
بانکو سلکت میکنی بعد به تعداد count که داره فور یا وایل میذاری و هرموقع به محل مورد نظر رسید کارتو انجام میدی

جیگرم:لبخند: میشه یه خورده واضح تر بگید! منظور تون از محل مورد نظر چیه یا چه ربطی به رکورد بعدی داره؟ :گیج:زحمتی نیست یه مثال آپ کن .

mohsen_popo
سه شنبه 11 مهر 1391, 00:30 صبح
اینم جواب سوالت



int index=0;

a.command = "select Max(fb_id) from factor_base_local ";
ds = a.Execute();
if (ds.Tables[0].Rows[0].ItemArray[0].ToString() == "")

index = Convert.ToInt32(ds.Tables[0].Rows[0].ItemArray[0].ToString());
index += 1;

البته اسم دیتا با فیلد رو عوض کن......من کد برات کپی پست کردم

aminaltavista
سه شنبه 11 مهر 1391, 00:46 صبح
اینم جواب سوالت



int index=0;

a.command = "select Max(fb_id) from factor_base_local ";
ds = a.Execute();
if (ds.Tables[0].Rows[0].ItemArray[0].ToString() == "")

index = Convert.ToInt32(ds.Tables[0].Rows[0].ItemArray[0].ToString());
index += 1;

البته اسم دیتا با فیلد رو عوض کن......من کد برات کپی پست کردم


از پاسختون ممنونم فقط a چی هستش؟وآیا منظورتون از ds همون dataset هست!

Nima_kyan
سه شنبه 11 مهر 1391, 01:21 صبح
سلام
ببین این کارتون رو رامیندازه

declare @tmp int
select @tmp=min(id) from table_name where id > x

select * from table_name where id=@tmp
x همون id رکورد فعلی هستش

aminaltavista
سه شنبه 11 مهر 1391, 12:29 عصر
دستت درد نکنه . درست جواب میده فقط:

میخوام که به جای id زمان بزارم . جای x میشه گذاشت 12 اما برای زمان چگونه باید کار کنم ؟ من زمان رو جلوش به صورت '14:00' گذاشتم برا یه لحظه درست کار کرد ولی به ثانیه هم نکشید با خط قرمز sql ازم خطا گرفت. حالا چه طور به جای عدد زمان رو برگردونه؟

Nima_kyan
سه شنبه 11 مهر 1391, 13:27 عصر
دستت درد نکنه . درست جواب میده فقط:

میخوام که به جای id زمان بزارم . جای x میشه گذاشت 12 اما برای زمان چگونه باید کار کنم ؟ من زمان رو جلوش به صورت '14:00' گذاشتم برا یه لحظه درست کار کرد ولی به ثانیه هم نکشید با خط قرمز sql ازم خطا گرفت. حالا چه طور به جای عدد زمان رو برگردونه؟
من درست متوجه نشدم. اگه میشه بیشتر توضیح بدید "دقیقا چی می خواید؟" قضیه زمان چیه؟

aminaltavista
سه شنبه 11 مهر 1391, 13:36 عصر
من درست متوجه نشدم. اگه میشه بیشتر توضیح بدید "دقیقا چی می خواید؟" قضیه زمان چیه؟
درست . ببینید تو دستوری که شما نوشتید خط اول int و خط دوم (شرط ) id عدد رو بر میگردونه یعنی بر اساس عدد رکورد بعدی رو بر میگردونه و هر id که بعد از id جاری باشه خروجی هست اما میخوام که به جای فیلد id فیلد زمان رو بر گردونه و در شر ط به جای فیلد id فیلد sh_end که فیلد زمانم هست رو قرار بدم.

فلسفه انجام این کار اینه که زمانی رو برگردون که بعد از زمان ساعت فلان هست.
سورس رو میزارم بهتر متوجه میشید:


declare @tmp time
select @tmp=min(sh_end) from t_shift where sh_end >'14:00'

select * from t_shift where sh_end=@tmp

Nima_kyan
سه شنبه 11 مهر 1391, 14:29 عصر
سورس رو میزارم بهتر متوجه میشید:


declare @tmp time
select @tmp=min(sh_end) from t_shift where sh_end >'14:00'

select * from t_shift where sh_end=@tmp
من همین کد رو تست کردم جواب میده
این عکس خروجیش:
93489
فیلد shift رو هم از نوع time در نظر گرفتم

aminaltavista
سه شنبه 11 مهر 1391, 15:12 عصر
من همین کد رو تست کردم جواب میده
این عکس خروجیش:
93489
فیلد shift رو هم از نوع time در نظر گرفتم

حق با شماست !:تشویق: من فیلد زمان رو از نوع رشته تعریف کرده بودم و به همین دلیل ازم خطا میگرفت . اون رو به time تغییر دادم درست شد . بی نهایت ازتون ممنونم.

Nima_kyan
سه شنبه 11 مهر 1391, 17:49 عصر
به نظر من بهتر اينه كه همون رشته در نظرش بگيري. من time در نظر گرفتم چون در كدتون @tmp رو از نوع time در نظر گرفته بوديد



declare @tmp time
select @tmp=min(sh_end) from t_shift where sh_end >'14:00'

select * from t_shift where sh_end=@tmp
اگه رشته در نظرش بگيريد و اون @tmp رو هم از نوع رشته تعريف كنيد مشكلي نداره و جواب ميده.