PDA

View Full Version : تغییر دادن شماره سطرهای(index) جداول در sql



silvery
دوشنبه 27 مرداد 1393, 09:49 صبح
سلام من یه برنامه با linq نوشتم داخلش یه فرم دارم که به جدولی از بانکم متصله. توی فرم یه گرید ویو دارم که اطلاعات جدول رو نشون میده و ی سری دکمه که عملیات های درج و حذف و ویرایش رو انجام میدن.
داخل جدولم یه ستون دارم بنام id که شماره سطر (index) داخلش قرار میگیره که بصورت خودکار بوسیله ی خود sql پر میشه.
حالا مشکلم اینه که وقتی توسط دکمه ی حذف سطری از جدول رو حذف میکنم شماره سطرهای بعد از اون آپدیت نمیشه(مثلا اگه سطر چهارم رو حذف کردم index سطر بعدش همون پنج میمونه در صورتی که باید چهار بشه چون جای سطر چهارم قرار میگیره).من به این شماره سطر نیاز دارم برای همین باید همیشه مرتب باشند.باید چیکار کنم؟

122390
122391
122392

sgn2006
دوشنبه 27 مرداد 1393, 11:59 صبح
سلام

تا اونجايي كه من مي دونم با Identity نمي تونين id ها رو پشت سرهم و مرتب قرار بدين ... اگر براي نمايش مي خواين بايد يك ستون تعريف كنين و ترتيب آن را كنترل كنين

منطقي نيست وقتي كد 4 پاك مي شه كد 5 بياد جاش بشينه چرا ؟ چون كد 5 ممكن با جدول ديگه اي لينك باشه و اگر قرار باشه تغيير كنه بايد اول اون لينكه درست بشه ...

موفق باشين

زنده باد ايران و ايراني

silvery
سه شنبه 28 مرداد 1393, 09:01 صبح
سلام

تا اونجايي كه من مي دونم با Identity نمي تونين id ها رو پشت سرهم و مرتب قرار بدين ... اگر براي نمايش مي خواين بايد يك ستون تعريف كنين و ترتيب آن را كنترل كنين

منطقي نيست وقتي كد 4 پاك مي شه كد 5 بياد جاش بشينه چرا ؟ چون كد 5 ممكن با جدول ديگه اي لينك باشه و اگر قرار باشه تغيير كنه بايد اول اون لينكه درست بشه ...

موفق باشين

زنده باد ايران و ايراني

ممنون از راهنماییتون.مشکل من دقیقا همینه من توی یه فرم دیگه میخوام این اطلاعات رو بوسیله ی یه کمبو باکس فراخوانی کنم به این صورت که وقتی از کمبو باکس که شامل اسم شهرهاست،یه شهر رو انتخاب کردم همه ی اطلاعات هم ردیف اون شهر از این فرم فراخوانی بشه (باید سطری فراخوانی بشه که آیدی اون برابر ایندکس مقداریه که از کمبوباکس انتخاب شده)اما بخاطر همین مرتب نبودن آیدی ها سطر اشتباهی فراخوانی میشه.حالا تکلیف چیه؟
اینم کدش:


private void S_Dcmb_SelectedValueChanged(object sender, EventArgs e)
{
int id = S_Dcmb.SelectedIndex+1;
var db = new TicketDataContext();
var Qu = db.FlightTBs.Where(c => c.Id == id);
if (Qu.Count() != 0)
{
CostTxt.Text = Qu.Single().Cost.ToString();
DateTxt.Text = Qu.Single().Date;
FlightNumTxt.Text = Qu.Single().FlightNum.ToString();
} }

Davidd
سه شنبه 28 مرداد 1393, 09:17 صبح
در واقع بهتر بود شما همون اول سوال و مشكل اصلي ميپرسيدي. كليد اصلي معمولا نبايد مقدارش تغيير كنه چون شناسه اون ركورد هست.
راه حل: وقتي داري كمبوباكس با اسامي شهرها پرميكني، id شهرهارو هم بخون و داخل يك ليست يا ارايه ذخيره كن. ايندكس كمبوباكس همون ايندكس ارايه ميشه.

silvery
سه شنبه 28 مرداد 1393, 10:06 صبح
راه حل: وقتي داري كمبوباكس با اسامي شهرها پرميكني، id شهرهارو هم بخون و داخل يك ليست يا ارايه ذخيره كن. ايندكس كمبوباكس همون ايندكس ارايه ميشه.

میشه با یه مثال برام توضیح بدین؟
من کل برنامم رو با کوئریهای لینک نوشتم.متوجه شدم باید یه حلقه بسازم و توی حلقه هربار مقدار یکی از خونه های ستون آیدی رو داخل یکی از خونه های آرایه بریزم اما نمیدونم چجوری باید به مقادیر ستون آیدی بصورت تک تک دسترسی پیدا کنم.ممنون میشم راهنماییم کنید

Mahmoud.Afrad
پنج شنبه 30 مرداد 1393, 19:04 عصر
در این حالت نباید از SelectedIndex استفاده کنی بلکه باید از SelectedValue استفاده کنی.