PDA

View Full Version : افزایش یک کد سیستمی خاص



ma.rad
پنج شنبه 22 اردیبهشت 1390, 11:22 صبح
من برا هر کسی که تو برنامه ثبت می کنم یه کد سیستمی گذاشتم ،به صورت زیر:
0203106001000001
که قسمت قرمز رنگ فقط تغییر میکنه وقسمت مشکی ثابته
من تو دیتابیس یه فیلد برای ثبت کامل کدسیستمی گذاشتم و یکی هم برای قسمتی که تغییر می کنه
و چون ابتدای عدد صفر داشت از نوع رشته ای تعریف شون کردم
باید اینطوری تغییر کنه

0203106001000001
0203106001000002
....
0203106001000010
0203106001000011
....
0203106001000100
0203106001000101
....
0203106001000999
حالا سوالی که دارم-چطور این کد افزایش پیدا کنه- وچطور بفهمم آخرین کدی که ثبت شده چی بوده تا عدد بعد از اون برای فرد نمایش داده بشه؟

ma.rad
پنج شنبه 22 اردیبهشت 1390, 14:23 عصر
دوستان راهنمایی کنن
سوال خیلی ساده است یا واقعا مشکله؟
در هر صورت روش هایی که استفاده کردم جواب نمیده

Directx
پنج شنبه 22 اردیبهشت 1390, 17:17 عصر
با این روالی که شما در بخش قرمز کدپیش رفتید بعد از هر بار اضافه شدن عدد هم بزرگتر میشه و مسلما اخرین عدد ثبت شده بزرگترینشونه و می تونید از MAX برای بدست آوردن بزرگترین مقدار فیلد استفاده کنید مثلا


select max(fied name) from table name;

علیرضا حسن زاده
پنج شنبه 22 اردیبهشت 1390, 19:28 عصر
به نظرم بهترین کاری که می تونی بکنی اینه که اولا قسمت قرمز رنگ کد رو به صورت عدد ذخیره کنی و به فیلدی هم که این مقدار رو ذخیره میکنه خاصیت افزایشی بدی که با هر بار افزوده شدن رکورد جدید خودش افزایش پیدا کنه
برای صفرها هم می تونی با توجه به عدد هر وقت که لازم داشتی به تعداد مناسب صفر اضافه کنی که این کار رو هم تو #C و هم با دستورات SQL میتونی انجام بدی(اگه تو گزارش گیری ها به این کد نیاز داری بهتره با SQL انجام بدی)

ma.rad
پنج شنبه 22 اردیبهشت 1390, 19:43 عصر
اگر به صورت عددی وافزایشی باشه یه مشکل پیش میاد اونم زمان حذف که کدها رو به هم میریزه

georgiaro
جمعه 23 اردیبهشت 1390, 00:02 صبح
سلام
بهترین کار از نظر من اینه که از روش هایی که دوستان گفتن استفاده کنید (استفاده از Identity) البته بهتره که قسمت ثابت عدد رو یه بار ذخیره کنید تا افزونگی نداشته باشید نمونه

0203106001000000 + n
n<=999999

n همون فیلد identity میشه.
اگرم خواستین مقدار یک فیلد identity رو آپدیت یا دستی اینزرت کنین میتونین از دستور sql زیر استفاده کنین.

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }

ma.rad
جمعه 23 اردیبهشت 1390, 10:36 صبح
این کارو قبلا کردم ولی با حذف یه مورد ترتیب کدهای سیستمی بهم میخوره ،من میخوام اگر یکی حذف شد کدها رفرش بشه
1---------------------------------->1
حذف ------------------------------> 2
3 --------------------------------->3
4

mohammadi4net
جمعه 23 اردیبهشت 1390, 15:18 عصر
این کارو قبلا کردم ولی با حذف یه مورد ترتیب کدهای سیستمی بهم میخوره ،من میخوام اگر یکی حذف شد کدها رفرش بشه
1---------------------------------->1
حذف ------------------------------> 2
3 --------------------------------->3
4

شما مگه از این کد به عنوان کلید استفاده نمی کنید؟ اگه اونو تغییر بدید جدوالی که از اون کلید استفاده کردند چه بلایی سرشون بیاد ؟
آیا واقعا نیازه که رفرش بشن؟ در مورد کارتون توضیح بدین .

علیرضا حسن زاده
شنبه 24 اردیبهشت 1390, 13:01 عصر
این کارو قبلا کردم ولی با حذف یه مورد ترتیب کدهای سیستمی بهم میخوره ،من میخوام اگر یکی حذف شد کدها رفرش بشه
1---------------------------------->1
حذف ------------------------------> 2
3 --------------------------------->3
4
میشه مزیتی که این کار داره رو بفرمایید یعنی کدها به هم نریزه
معمولا تو عموم سیستمهایی مه برنامه به کاربر کد منحصر به فرد میده باحذف اون کد دیگه شماره ترتیب از دست میره البته میشه با دستورات SQL کاری کرد که بعد از حذف دوباره شماره ها مرتب بشن و سربار زیادی ممکنه برای سیستم ایجاد کنه مثلا شما فرض کنید 1000 تا رکورد رو حذف کردین و بخواین رکورد شماره 1 رو حذف کنید اونوقت میدونید چند تا عملیات Update باید انجام بشه حالا اگه این فیلد کلید باشه برای جدول هیا دیگه هم این اتفاق باید بیفته که به نظر من انجام دادن همچین کاری درست نیست مگر اینکه دلیل قانع کننده ای براش وجود داشته باشه