-
یک شنبه 25 دی 1390, 12:52 عصر
#1
کاربر تازه وارد
تابع ایجاد شماره افزایشی
با سلام خدمت دوستان
یه تابع تو همین سایت پیدا کردم که ازش واسه شماره فاکتور استفاده میکنم اما و قتی تا عدد 10 شماره تولید میکنه دیگه شماره بعدی رو یعنی عدد11 به بعد رو تولید نمیکنه .اگه کسی از دوستان راهنمایی بکنه ممنون میشم.
در ضمن اسم جدولم foroosh و اسم فیلدم تو جدول factorno هستش
private void factor_number();
{
SqlConnection con = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand("Select Max(factorno) From foroosh", con);
if (con.State == ConnectionState.Open)
con.Close();
con.Open();
long InvoiceNumber;
if (cmd.ExecuteScalar() != DBNull.Value)
InvoiceNumber = Convert.ToInt64(cmd.ExecuteScalar());
else
InvoiceNumber = 0;
con.Close();
lblfactorno.Text = (InvoiceNumber + 1).ToString();
}
-
یک شنبه 25 دی 1390, 13:17 عصر
#2
کاربر دائمی
نقل قول: تابع ایجاد شماره افزایشی
دوست عزيز نمي دونم تابعت چي هست .. ولي معمولا اگر روش به اين صورت باشه که بزرگترين عدد رو بدست مياره و بعلاوه يکش ميکنه ، معمولي ترين اشتباهي که باعث ميشه مشکل شما ايجاد بشه اينه که نوع خروجيت يا فيلدت عددي نيست ...! در اين صورت بهتره cast بشه ..!
اگر کدت رو ببينم شايد بهتر بتونم راهنمايي کنم ..!
-
دوشنبه 26 دی 1390, 08:15 صبح
#3
کاربر تازه وارد
نقل قول: تابع ایجاد شماره افزایشی
سلام کد رو که واستون گذاشتم و به این صورت عمل میکنه هر بار که تابع فراخوانی میشه با مراجعه به جدول foroosh بزرگترین مقدار فیلد factorno را پیدا میکنه و اونو با عدد یک جمع میزنه
-
دوشنبه 26 دی 1390, 09:05 صبح
#4
کاربر دائمی
نقل قول: تابع ایجاد شماره افزایشی
نوع فیلدتون چیه؟ و اینکه بعد از عدد 10 خروجی اون Execute scaler چی میشه؟
-
دوشنبه 26 دی 1390, 09:15 صبح
#5
کاربر تازه وارد
نقل قول: تابع ایجاد شماره افزایشی
نوع فیلدم( nchar(10 هستش و بعد از 10 دوباره خود عدد 10 تکرار میشه
-
دوشنبه 26 دی 1390, 10:45 صبح
#6
کاربر تازه وارد
نقل قول: تابع ایجاد شماره افزایشی
کسی نیست جوابمو بده
-
سه شنبه 27 دی 1390, 10:58 صبح
#7
کاربر تازه وارد
نقل قول: تابع ایجاد شماره افزایشی
-
سه شنبه 27 دی 1390, 23:10 عصر
#8
کاربر دائمی
نقل قول: تابع ایجاد شماره افزایشی
ببین دوست عزیز شما چون نوع اون فیلدتون nchar همیشه max رو 9 میگیره و واسه همین 10 برمیگردونه .. چون مقایسه رشته ای انجام میده و نه عددی و تو مقایسه رشته ای چون عدد سمت چپ 10 ، یکه اون رو از 9 کوچیکتر میدونه. یعنی تو مقایسه رشته ای به ترتیب از کاراکتر سمت چپ شروع میکنه و هرکدوم بزرگتر بود رو برمیگردونه..
حالا یا باید کلا نوع ستونت رو int بذاری (که به نظرم این بهتره واسه اینکه فیلد آیدی شمازشی نباید nchar باشه) یا اینکه کوئری که واسه max گرفتن مینویسی رو اینجوری تغییر بدی Select Max(factorno + 0) From foroosh
اینجوری مقایسه عددی انجام میده
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت