PDA

View Full Version : سوال: تولید یک عدد 10 الی 15 رقمی به صورت مرتب



r_s1389@yahoo.com
یک شنبه 26 آذر 1391, 20:02 عصر
سلام
هدف من اینکه بیام یک عدد مثلا 9011025031 رو تولید کنم بعد اون یکی عددم به طور اتوماتیک آخرش 32 و الی .......

چند مشکل دارم
1 = این عدد رو با چه نوعی در دیتابیس ذخیره کنم(data type)
2 = آیا میشه این عدد رو پایگاه داده خودش تولید کرد
3 = اگر با سی شارپ باید این کا رو بکنم کدش رو مینویسین
4 = این عدد میخوام کلید اصلی باشه در پایگاه داده

r_s1389@yahoo.com
یک شنبه 26 آذر 1391, 20:20 عصر
یکی جواب بده

ordebehesht
یک شنبه 26 آذر 1391, 20:24 عصر
1 اگه روش حساب کتاب نمی کنی varchar خوبه
2 فکر نکنم
3 به این لینک نگاه کن http://www.30sharp.com/article/4/189/1/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-64-%D8%A8%DB%8C%D8%AA%DB%8C-%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C-%D9%88-%D8%BA%DB%8C%D8%B1-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C.aspx
4 همون لینک بالا فقط باید کدی بنویسی که عدد تولیدی رو چک کنه اگه نبود قبول کنه

r_s1389@yahoo.com
یک شنبه 26 آذر 1391, 20:32 عصر
نه من میخوام عددم مرتب تولید بشه 9011025030 . 9011025031 . 9011025032. الی آخر
من هم به این نتیجه رسیده بودم که باید nvarchar باشه چون نوع داده ای دیگه ای نداریم

ما میتونیم این کار رو بوسیله دو نوع داده ای تولید کنیم
مثلا دو یا سه رقم آخر با int ( که میشه به صورت اتوماتیک توسط sql ایجاد کرد) و 7 یا 8 رقم آخر varchar

r_s1389@yahoo.com
یک شنبه 26 آذر 1391, 20:35 عصر
1 اگه روش حساب کتاب نمی کنی varchar خوبه
2 فکر نکنم
3 به این لینک نگاه کن http://www.30sharp.com/article/4/189/1/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-64-%D8%A8%DB%8C%D8%AA%DB%8C-%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C-%D9%88-%D8%BA%DB%8C%D8%B1-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C.aspx
4 همون لینک بالا فقط باید کدی بنویسی که عدد تولیدی رو چک کنه اگه نبود قبول کنه
در ضمن این کد رو واسه ما تحلیلش میکنی

private Int64 GreateUniqueNumbericID() { byte[] bytes = Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(bytes, 0); }

ordebehesht
یک شنبه 26 آذر 1391, 20:36 عصر
من زیاد به sql وارد نیستم نمیدونم ولی چرا باید مرتب باشه

r_s1389@yahoo.com
یک شنبه 26 آذر 1391, 20:42 عصر
شماره دانشجویی رو ندیدی 901102503 و 9011025031 و 9011025032 و ............

ordebehesht
یک شنبه 26 آذر 1391, 20:53 عصر
در ضمن این کد رو واسه ما تحلیلش میکنی

private Int64 GreateUniqueNumbericID() { byte[] bytes = Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(bytes, 0); }



تو خوده مقاله تحلیل کرده دیگه

ordebehesht
یک شنبه 26 آذر 1391, 20:53 عصر
شماره دانشجویی رو ندیدی 901102503 و 9011025031 و 9011025032 و ............

خوب بنده خوب خدا سال رو به شماره تولیدی وصل کن بعد تو دیتابیس ذخیره کن

r_s1389@yahoo.com
یک شنبه 26 آذر 1391, 21:31 عصر
خوب این وسط کلید اصلی چی میشه؟؟؟

r_s1389@yahoo.com
یک شنبه 26 آذر 1391, 22:12 عصر
آقا یکی یه جواب کلی بده
تشکر

ordebehesht
یک شنبه 26 آذر 1391, 23:42 عصر
کلید اصلی کلیدی با مقدار منحصر بفرد و غیر قابل تکرار شما مقدار منحصر و تکرار نشده رو وارد میکنی

Mahmoud.Afrad
دوشنبه 27 آذر 1391, 04:50 صبح
اگر تعداد رکوردهای جدول زیاد هستند میتونید نوع فیلد کلیداصلی رو از نوع uniqueidentifier انتخاب کنید. در اینصورت برای ذخیره کردن رکورد در جدول باید فیلد کلید رو در سی شارپ با مقدار Guid.NewGuid() مقداردهی کنید.
پس شماره دانشچویی(طبق مثال خودتون) ، چون ممکنه الگو و ساختارش(تعداد ارقامش) تغییر کنه نمیتونه کلیداصلی باشه.
برای هر دانشجو اطلاعاتی از قبیل سال و ترم ورود و رشته و گرایش و نوع پذیرش و ... ذخیره میشه که از ترکیبی از اینها میشه یک شماره دانشجویی ایجاد کرد. البته اون چند رقم سمت راست باید غیر تکراری باشه. پس با این حساب نیاز به ذخیره شماره دانشجویی هم نیست چون شماره دانشجویی ترکیبی از چند فیلد دیگه میشه.

r_s1389@yahoo.com
دوشنبه 27 آذر 1391, 09:37 صبح
میشه یک همچین کدی رو بنویسین

r_s1389@yahoo.com
دوشنبه 27 آذر 1391, 09:38 صبح
کلید اصلی کلیدی با مقدار منحصر بفرد و غیر قابل تکرار شما مقدار منحصر و تکرار نشده رو وارد میکنی

اینی رو که شما میگین رو بلدم اگه کد یا الگوریتمی داری رو بگو