PDA

View Full Version : ریست کردن فیلد autonumber



parsa118
چهارشنبه 13 بهمن 1389, 06:32 صبح
سلام

من در مورد این قضیه خیلی جستجو کردم ولی به نتیجه نرسیدم شایدم من درست جستجو نکردم
من می خواستم در vb.net فیلد autonumber یکی از جداول دیتابیسم رو ریست کنم به علت اینکه وقتی کاربر میاد و از حذف استفاده میکنه فیلد autonumber جاش خالی میمونه می خواستم این مشکل رو رفع کنم
مثلا وقتی کاربر بر روی گزینه delete کلیک کرد در کنار عمل حذف فیلد id من که autonumber هم هست از دوباره مرتب بشه و عددی خالی نمونه من از sqlserver 2008 استفاده میکنم
طبق جستجو که کردم چندین راه پیشنهاد شده بود ولی جواب نگرفتم
من یک برنامه انبارداری کوچیک دارم مینویستم و این مشکل رو در حذف کالای انبار دارم
خیلی ممنون میشم راهنمایی کنید

AmirHarirbafan
چهارشنبه 13 بهمن 1389, 11:25 صبح
از دستور DBCC CHECKIDENT استفاده کنید.
در مثال زیر فیلد Identity مربوط به جدول tbl1 ریست میشه و عدد بعدی که تولید میکنه، عدد 51 هستش.



DBCC CHECKIDENT("Tbl1" , RESEED , 50)

حالا برای اینکه شما به منظورتون برسید. بعد از اینکه کار بر گزینه حذف را کلیک کرد، آیدی فیلدی را که کاربر میخواهد حذف کند را بدست آورید و یکی از آن کم نموده و بجای عدد 50 در دستور قرار دهید و دستور را اجرا نمایید
موفق باشید

parsa118
چهارشنبه 13 بهمن 1389, 14:22 عصر
این دستور که فکر میکنم باید در محیط sqlserver نوشته بشه در محیط vb.net جواب میده ؟
یعنی مثلا به صورت زیر بنویسم

PubSqlCom.CommandText = "DBCC CHECKIDENT("Tbl1" , RESEED , 50)
"
من امتحان کردم جواب نداد

parsa118
چهارشنبه 13 بهمن 1389, 16:37 عصر
از دوستان کسی میتونه راهنمایی کنه

ali_najari
چهارشنبه 13 بهمن 1389, 16:52 عصر
جواب دوستان درسته!

من از دستور زیر برای ریست کردن جداول Access استفاده میکنم ببینید در SQL هم جواب میده:


ALTER TABLE YourTableName ALTER COLUMN YourAutoNumberColumn COUNTER(1,1)

parsa118
چهارشنبه 13 بهمن 1389, 17:20 عصر
با تشکر از شما خیر جواب نمیده و خطای زیر رو میده

Column, parameter, or variable #6: Cannot find data type COUNTER
من باید بگم جدول اطلاعات داره ! فرقی که نمیکنه ؟

ali_najari
چهارشنبه 13 بهمن 1389, 18:51 عصر
من یه سایت رو دیدم واسه ریست کردن Autonumber در بانک های SQL از دستور زیر استفاده کرده بود ولی قبلش گفته بود که باید اطلاعات جدول رو ابتدا حذف کنید:


DBCC CHECKIDENT (TableName, RESEED, 1)

AmirHarirbafan
پنج شنبه 14 بهمن 1389, 02:18 صبح
این دستور که فکر میکنم باید در محیط sqlserver نوشته بشه در محیط vb.net جواب میده ؟
یعنی مثلا به صورت زیر بنویسم

PubSqlCom.CommandText = "DBCC CHECKIDENT("Tbl1" , RESEED , 50)
"
من امتحان کردم جواب نداد

دقت داشته باشید که به جای Tbl1 باید نام جدول خودتون رو وارد کنید. Tbl1 رو من به عنوان مثال گفتم

parsa118
پنج شنبه 14 بهمن 1389, 22:57 عصر
درسته می دونم ولی جواب نمیده ! بقیه دوستان چکار میکنند برای حل این مشکل ممنون میشم راهنمایی کنید
بعد نمیتونم اطلاعات رو حذف کنم که :گریه:

parsa118
جمعه 15 بهمن 1389, 03:05 صبح
از دوستان خواهش میکنم یک نگاهی هم به این تاپیک بکنند ممنون

parsa118
جمعه 15 بهمن 1389, 12:21 عصر
خواب اینطور که مشخصه و کلی در سایتهای خارجی و فارسی جستجو کردم این چیزی که می خواهم امکان پذیر نیست و دستورات بالا هم در صورتی جواب میده که جدول خالی باشه
البته یک راه هست که جدول رو کپی کنید در یک جدول دیگه که فکر نمی کنم زیاد جالب باشه چون برای هر حذف باید یک بار کل جدول رو کپی کنیم !
بهترین راه که من به نتیجه رسیدم و بعضی دوستان راهنمایی کردند اینه که خودم یک فیلد بذارم برای ردیف و از فیلد autonumber استفاده نکنم اینطوری میتونم با دستورات sql این فیلد رو ریست کنم
خیلی ممنون

ehsanr
شنبه 16 بهمن 1389, 11:04 صبح
سلام - چه نیازی است که اتونامبر ریست شه؟شما که اون رو واسه کاربر نمایش نمیدید؟

shahab2025
شنبه 16 بهمن 1389, 12:18 عصر
سلام - چه نیازی است که اتونامبر ریست شه؟شما که اون رو واسه کاربر نمایش نمیدید؟
سلام
من هم با این قضیه موافقم
چه نیازی به ریست کردن این فیلد است . ریست کردن این فیلد مشکلات زیادی رو میتونه به وجود بیاره چون relation بین جداول از این فیلد استفاده میکنه
اگر مشکل از سریال کالاهاست که به هم میخوره خوب یه فیلد سریال اضافه کن که اتوماتیک نباشه

محسن شامحمدی
یک شنبه 17 بهمن 1389, 12:46 عصر
خواب اینطور که مشخصه و کلی در سایتهای خارجی و فارسی جستجو کردم این چیزی که می خواهم امکان پذیر نیست و دستورات بالا هم در صورتی جواب میده که جدول خالی باشه

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


ALTER TABLE tbl ALTER COLUMN ID COUNTER (1,1)
البته اینطوری ادامه فیلد اتونامبر می شه 1 که البته خودتون می تونید اولین 1 رو به انتخاب خوتون هر عددی که دوست دارید بذارید.
پاورقی:
tbl: نام جدول من
Id: نام فیلد اتونامبر من
اولین 1: می گه دوست دارید به چه عددی رسیت بشه
دومین 1: می گه اتونامبر چند تا چندتا بالا بره.
نکته: این کد در اکسس 2007 و در یک جدول پر از اطلاعات تست شده.