PDA

View Full Version : پيداكردن آي هاي حذف شده و جايگزين كردن آنها



msdsbi
شنبه 24 بهمن 1388, 12:25 عصر
سلام دوستان عزيز
مشكلي كه من دارم اينه كه توي ديتابيسم و داخل تيبل اطلاعاتي يك فيلد آي دي تعريف كنم كه تا اينجاش مشكلي نيست .
مي خوام وفتي يوزرم داره با برنامه من كار مي كنه و بياد يكي از ركورد ها رو كه حذف مي كنه اون آي دي هم حذف مي شه كه داخل ديتابيسم بوده و به شكل autoNumber هست .
من مي خوام وقتي ركورد جديد رو وارد مي كنه اون آي دي كه حذف شده شمارش اون اي دي بشه كه حذف شده
مثلا اگر اي دي شماره 3 رو حذف كرده و بعد كه بياد ركورد جديد وارد كنه ID بشه 3

در ضمن من اومدم اي دي رو از AutoNumber خارج كردم و هر چه سعي كردم نتونستم
اينم بگم كه نمونه كدش رو واسه VB6 پيدا كردم ولي هر چه كلنجار رفتم به جايي نرسيدم و نتونستم به C# تبديل كنم

نمونه كدش واسه VB6 اينه
While Not Adodc5.Recordset.EOF And NewID = Adodc5.Recordset.Fields!ID
Adodc5.Recordset.MoveNext
NewID = NewID + 1
Wend

از دوستان خواهش مي كنم كه منو راهنمايي كنن.

slashslash2009
شنبه 24 بهمن 1388, 13:04 عصر
این کاری که شما میخواید انجام بدین زیاد جالب نیست البته نمیدونم واسه چی میخواید این کارو بکنید
فکر کنید برنامه انباری هست که باید هر دفعه تعدادی کالا را فاکتور کنه خوب باید یک شماره جدید و بزرگتر از همه باشه دیگه که معلوم بشه آخرین شماره فاکتور کدوم بوده . بعد اگر یکی رو پاک کنیم بعدش بخوایم موقع اضافه کردن فاکتور جدید شماره آی دی رکورد حذف شده رو بزاریم یکمی ناجور میشه شاید در جاهایی از برناممون هم مشکل پیش بیاد .

محمد سلیم آبادی
یک شنبه 25 بهمن 1388, 04:28 صبح
نیازی نیست که ID جدولتون به ترتیب و منظم باشه. هنگام نمایش دادن اگر از نرم افزار SQL Server 2005 استفاده می کنید با استفاده از توابع Ranking به هر سطر از جدول یک شماره از 1 می دهید و یکی یکی این مقدار افزایش پیدا میکند مثلا
Select Row_number() over(order by (select 1)) as ID , * from your_table_name