PDA

View Full Version : سوال: تولید شماره حساب(ضروری)



kordestan
جمعه 27 اردیبهشت 1392, 16:13 عصر
سلام...من یه فرم دارم برای ایجاد شماره حساب. حالا میخوام شماره حسابم از عدد 00000000 شروع بشه و هر دفعه من روی دکمه کلیک کردم یکی بهش اضافه بشه.. 00000001 و 000000002 و ....

ممنون

ali reza mansoori 2
جمعه 27 اردیبهشت 1392, 16:19 عصر
دوست عزیز اصولش اینه که شما آخرین شماره حساب رو یه جایی ذخیره میکنی و هر وقت که بخوای حساب جدید اضافه کنی اونو به اضافه یک میکنی و دوباره ذخیره اش میکنی

vistacali
جمعه 27 اردیبهشت 1392, 16:31 عصر
سلام...من یه فرم دارم برای ایجاد شماره حساب. حالا میخوام شماره حسابم از عدد 00000000 شروع بشه و هر دفعه من روی دکمه کلیک کردم یکی بهش اضافه بشه.. 00000001 و 000000002 و ....

ممنون
عددی که با 0000000 صفر شورع بشه رو من ندیدم بخوای این کارو کنی پردازش رشته ها میشه ولی یه راه راحت تر داره بیا هر تعداد صفر میخوای بگیر قبلش یه 1 اضاف کن مثلا اینطور 10000000 حالا بعدش این رو یه واحد ++ بده و اون یک رو با حلقه for ازش بیرون بیار و نمایش بده بدون یکی که اضاف کردی

اینطوری عددت رو از نوع long بگیر
مثل این long n = 10000000;
حالا n++;
بعدش رشته از نوع ارایه است اون عنصر اول رو کم کن ار ایه و بقیه ارایه رو نشون بده به همین سادگی :لبخند: روش شیرازی شد

kordestan
جمعه 27 اردیبهشت 1392, 16:52 عصر
ممنون دوست من...من زیاد با for کار نکردم نحوه ی بکارگیریشو یادم رفته ممنون میشم اگه اونو با مثال توضیح بدین:لبخندساده:

vistacali
جمعه 27 اردیبهشت 1392, 16:54 عصر
ممنون دوست من...من زیاد با for کار نکردم نحوه ی بکارگیریشو یادم رفته ممنون میشم اگه اونو با مثال توضیح بدین:لبخندساده:


به این لینک سری بزن (http://www.dotnetperls.com/for)

kordestan
جمعه 27 اردیبهشت 1392, 17:13 عصر
شرمنده...اونو خوندم ولی اون عددی که میخوام بدست نمیاد(ناشی هستم)...اگه همون مثالی رو که خودت گفتی فقط کدش رو بنویسی بینهایت ممنون میشم(خیلی ضروریه)...من میخوام هر وقت هم نرم افزار ریست شد آخرین شماره حساب رو داشته باشم وطبق اون شمره حسابهای بعدی رو بسازم
بازم ممنون

mortezasar
جمعه 27 اردیبهشت 1392, 17:40 عصر
سلام دوست عزیز فیلد دیتا بیست رو به حالت اتوماتیک بذار و شروعش رو 00000000 بذار و مقدار اضافه شده رو 1 بذار حله !
خاصیت Identify البته فک کنم انگلیسیش رو یکم بد نوشتم

Mahmoud Zaad
جمعه 27 اردیبهشت 1392, 18:35 عصر
سلام
از همون فیلد autonumber میشه استفاده کرد فقط در آخر با استفاده از متد ToString هر چندتا صفر که خواستی قبلش قرار می دی:
int number = 1;
MessageBox.Show(number.ToString("000000"));
در این مثال، 5تا صفر و یک 1 نشون داده میشه حالا اگه شما عدد رو 100 قرار بدی سه تا صفر و 100 نشون داده میشه و ...

kordestan
جمعه 27 اردیبهشت 1392, 18:35 عصر
سلام...وقتی اون خصیت رو 0000000 قرار میدم همشونو 0 حساب میکنه اینجوری 1 رقمی میشه وقتی هم 10000000 میدم ارو میده حتی برای 100

Mahmoud Zaad
جمعه 27 اردیبهشت 1392, 18:46 عصر
نیازی به دستکاری اون فیلد نیست، از همون یک شروع بشه مشکلی نداره، شما فقط موقع نمایش به کاربر با استفاده از متدی که گفتم، چندتا صفر قبلش قرار میدید. یا اصلا برای اینکه کار اصولی تر بشه خودتون یه فیلد از نوع nvarchar بسازید که یکی یکی بهش افزوده میشه.

kordestan
جمعه 27 اردیبهشت 1392, 19:00 عصر
خب برای ذخیره ی هر دفعه ی اون باید چجوری بانکمو بروز کنم؟؟بعد از ریست نرم افزار باید آخرین شماره حساب نشون دده بشه تا بقیه هم با استفاده از متد خودکار بعد ازونو به عنوان شماره حساب قرار بده؟

vistacali
جمعه 27 اردیبهشت 1392, 19:19 عصر
سلام
از همون فیلد autonumber میشه استفاده کرد فقط در آخر با استفاده از متد ToString هر چندتا صفر که خواستی قبلش قرار می دی:
int number = 1;
MessageBox.Show(number.ToString("000000"));
در این مثال، 5تا صفر و یک 1 نشون داده میشه حالا اگه شما عدد رو 100 قرار بدی سه تا صفر و 100 نشون داده میشه و ...

من با این روش موافقم اما اشکالاتی داره مثلا اگر 000000 را ثابت در نظر بگیرم حالا فیلد جدول از 1 شروع بشود بعدش میشه 0000001 خب تا اینجا حله حالا به اعداد 2 رقمی میرسیم و 6 تا 0 ثابت است مثلا عدد 10 میشه 00000010 خب اینجا اگر به سه رقم برسیم چی میشه 000000100 این کار به نظر من مشکل داره باید بیاییم وقتی عدد رو از جدول میخونیم پردازشش کنیم و بر حست تعداد رقم هاش از صفر ها کم کنیم تا عدد صحیح و 6 رقمی بدست بیاد




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


سلام...وقتی اون خصیت رو 0000000 قرار میدم همشونو 0 حساب میکنه اینجوری 1 رقمی میشه وقتی هم 10000000 میدم ارو میده حتی برای 100
نوعش رو نزار int بزار long

hojjatshariffam
جمعه 27 اردیبهشت 1392, 19:54 عصر
آقا نوعش رو تو دیتا بیس از نوع متنی بزار (تو اکسس TEXT بگیر تو اسکیو ال مثلا nVarChar ) وقتی از دیتا بیس آخریشو میخونی اگه خالی باشه خودت صفر بزارش و اگه خالی نباشه که خودشو نشون بده (برا اینکه بتونی ماکسیمم و مینیمم رو هم پیدا کنی می تونی یه فیلد هم عددی ذخیره کنی که دقیقا عددهمون شماره حساب رو نشون بده)
بعد تو برنامه به long int تبیل کن و بعد یکی بهش اضافه کن آخر سر هم تو اضافه به دیتا بیس هم می تونی تو فیلد عددی مقدار عددی رو ذخیره کنی و تو فیلد متنی به قبل عددت تعدای صفر اضافه کن
روششم اینه:

for(int i=0;i<(15-no.Length);i++)
no='0'+no;

این یه روش بود . یه روش عیر استاندارد چون دو فیلد تو دیتا بیس اشغال می کنه
یه روشم اینه که فقط عددی ذخیره کنی و موقع نمایش این کارو بکنی که دوستان توضیح دادند
فکر کنم تیکه کد مشکلتونو حل بکنه

khokhan
جمعه 27 اردیبهشت 1392, 20:09 عصر
با سلام

1 یه ستون مخصوص توی بانکت ایجاد کن باهر اسمی که دوست داری با نوع nvcher

2 در فرمی که می خوای شماره حساب ایجاد کنی با این متد آخرین شماره ثبت شده در ستون مربوطه رو دریافت کن


public string newid()
{
string AtCnt;
command = new SqlCommand();
con = new SqlConnection(connect);
con.Open();
command.CommandType = CommandType.Text;
command.CommandText = "select max(substring(BID,4,5)) from BRAND (nolock)";
command.Connection = con;
AtCnt = Convert.ToString(command.ExecuteScalar());
con.Close();
return AtCnt;
}

3 بعد از اینکه آخرین شماره ثبت شده در بانک رو بدست آوردی با این متد یه دونه بگذار روش ودر کنترلی مثل لیبل نمایش بده و هنگام ثبت اطلاعات مقدار درون این لیبل رو هم در همان ستون شماره حساب ذخیره کن


void BIDMAKE()
{
label5.Text = "";
int NewId = 1;
string strnewid = " ";
object obj = newid(); //DataSet Invoke from DBConnection class
if (obj.ToString() != "")
{
NewId = Convert.ToInt32(obj.ToString()) + 1;
strnewid = NewId.ToString();
strnewid = strnewid.PadLeft(4, '0');
label4.Text = strnewid;
}
else
{
label4.Text = "0001";
}
}

اگه مشکلی داشتی یه ندا بده نمونه واسطون بگذارم :لبخند:

Mahmoud Zaad
جمعه 27 اردیبهشت 1392, 20:47 عصر
من با این روش موافقم اما اشکالاتی داره مثلا اگر 000000 را ثابت در نظر بگیرم حالا فیلد جدول از 1 شروع بشود بعدش میشه 0000001 خب تا اینجا حله حالا به اعداد 2 رقمی میرسیم و 6 تا 0 ثابت است مثلا عدد 10 میشه 00000010 خب اینجا اگر به سه رقم برسیم چی میشه 000000100 این کار به نظر من مشکل داره
long
نه اینطور نیست، در مثالی که زدم هر عددی زیر شش رقم بهش بدید یه رشته 6 رقمی بهتون تحویل میده هر چی رقم ها میره بالاتر صفرهای سمت چپ کمتر میشن، یه امتحان کنید، مشخص میشه.

kordestan
جمعه 27 اردیبهشت 1392, 20:49 عصر
شرمنده دادا...اگه میشه کد linq شو زحمتشو بکشید...چون من برای راحتی کد نوسی از لینک استفاده میکنم....خیلی ممنون میشم..اگه نمونه برنامه هم داشتی دیگه چه بهتر:قلب:

kordestan
شنبه 28 اردیبهشت 1392, 14:00 عصر
سلام maysamfthi (http://barnamenevis.org/member.php?199295-maysamfthi) جون....دمت گرم عالی بود....هم ساده هم کارآمد:تشویق::تشویق::تشویق: