PDA

View Full Version : سوال: عدد ثابت قبل از عدد تولید شده در فیلدی اتونامبر



arash mehrani
جمعه 22 شهریور 1392, 14:57 عصر
سلام
یه پروژه دارم با بانک اطلاعاتی sql یه فیلد با نام id داریم که بعد از اضافه شدن رکورد جدید خودکار کد بهش اختصاص میده ! با همون identity increment خود Sql Express
حالا میخوام اگه کاربر مثلا
user 613 داشت از نرم افزار استفاده میکرد اگه رکورد جدید خواست ثبت کنه اول کدی که در فیلد id ساخته میشه عدد 613 باشد . مثلا 613123456 یا 613789456
برای کاربر 914 هم به طور مثال همینطور . خودکار البته
برای اضافه کردن رکورد جدید به بانک هم یه کوئری با خود TableAdapter درست کردم:لبخند:

abdullah20
جمعه 22 شهریور 1392, 15:49 عصر
خوب این که کاری نداره
شما وقتی کابر وارد شد کد کاربر را نگهداری کنید
بعد وقتی میخواید رکورد اضافه کنید بزرگترین id جدولی که میخواید به اون رکورد اضافه کنید را بگیرید و اولش کد کاربر را قرار بدید و به اضافه 1 و ذخیره کنید

arash mehrani
جمعه 22 شهریور 1392, 16:08 عصر
این کد رو نوشتم که همون کار رو میکنه ولی کدش استاتیک میشه و شماره ای هم که میده مطمئا نیست از نظر تکراری بودن

Random rand = new Random();

textBox1.Text = "613" + rand.Next(1000, 9999).ToString();

میشه مثال بزنید :افسرده:

aliagamon
جمعه 22 شهریور 1392, 16:16 عصر
اول از همه اینکه با روشی که شما میخوای انجام بدی تکراری به وجود نمیاد چون شماره اول هر کاربر اختصاصیه....
برای بدست اوردن کد اختصاصی کاربر جدید از کد کاربر قبلی میتونید از این روش استفاده کنید:
در صورتی که اغداد رندوم همیشه تعدادی ثابت داشته باشن مثلا 4 رقم باشن شما میتونید شماره یکتا کاربر(بخش اول ) رو در بیارین مثلا اگه کد یه نفر این باشه :452095 شما صول رو که در بیاری میبینی 6 رقمه و 6-4 میشه 2 پس 2 عدد اول میشه شما یکتا(45) و اونو با 1 جمع میکنی(46) میشه کد یکتای کاربر بعدی بعد یه عدد چهار رقمی رندم میزاری جلوش ... :چشمک:

arash mehrani
جمعه 22 شهریور 1392, 17:04 عصر
abdullah20 (http://barnamenevis.org/member.php?190756-abdullah20) جان میتونی کد این شیوه ای رو که گفتی بنویسی ؟ لنگ موندیم:افسرده:

arash mehrani
دوشنبه 25 شهریور 1392, 17:59 عصر
کسی نمیتونه کمک کنه ؟ گیر کردیم الکی :لبخند:

abdullah20
دوشنبه 25 شهریور 1392, 18:25 عصر
دوست عزیز چرا اینقدر داری چیز به این ساده ای را پیچیدش میکنی
شما دوتا جدول داری
یکی برای مشخصات کاربران که شامل فیلدهای کد،نام و پسوردشون هست درسته
حالا یه جدول دیگه داری به نام محصول که یه سری اطلاعات به اون اضافه میکنی که مثلا فیلدهاش کد،نام محصول،قیمت
حالا میخوای وقتی در جدول کاربران کاربری با کد 12 وارد نرم افزار شد وقتی خواست به جدول محصول رکورد اضافه کنه در فیلد کد اول 12 باشه + یه عددی که تکراری نباشه
اگر همینه بگو تا کدش را بنویسم براتون

arash mehrani
دوشنبه 25 شهریور 1392, 18:40 عصر
ممنون میشم اگه بنویسید دوست من .

doostl
دوشنبه 25 شهریور 1392, 19:37 عصر
سلام

واسه این کار میتونی عدد شروع آیدنتیتی رو (seed) عوض کنی یعنی مثلا برای user621 بزاری 6210 با استفاده از یه stored procedure که توش بنویسی

DBCC CHECKIDENT (ESME TABLE, reseed, SHOMARE USER)

اگه میخوای مشکل تکراری نبودن رو حل کنی هم میتونی به جای 6210 واسه seed از 210000 یا هر عددی که فک میکنی تا اونجا ردیف اضافه میشه