PDA

View Full Version : اضافه کردن یک عدد ثابت به اول شماره فاکتور



sadeghlinux
یک شنبه 13 بهمن 1398, 16:27 عصر
سلام

من برنامه ام قسمت شماره فاکتور با فشردن دکمه یه واحد به شماره فاکتور قبلی اضافه میشه

حالا من میخام برای خواناییو شناسایی بهتر در هرقست از برنامه که نیاز به گرفتن کد هست .... مثل شماره فاکتور ، شماره محصول، کد مشتری و .... قبل از کد یک عدد ثابت درج کنم

به عنوان مثال الان برنامه عدد 1 رو بصورت خودکار پس از بررسی بانک به تکست باکس فاکتور میده حالا نکته اینجاست که میخام عدد 98 قبل از عدد 1 درج بشه 981 کد بعد 982 و 981000 و ...

و برای کد مشتری 991 ، 992 ، 9950 ، 991000 و الی آخر ...

ممنون

منتظر راهنمایی شما عزیزان هستم

cjmoon
شنبه 19 بهمن 1398, 19:15 عصر
من منظورت رو زیاد متوجه نشدم

اگه من بخوام یک مقدار ثابت رو کناری یک مقدار متغیر بزام اینطوری عمل می کنم
textbox1.text="98" + meghdar
98 ثابت هستش و متغیر meghdar همیشه تغییر می کنه حالا از دیتا بیس یا دستا گرید میگیره اگه منظورت این نیست خبر بده

safari_m4
شنبه 19 بهمن 1398, 20:31 عصر
من منظورت رو زیاد متوجه نشدم

اگه من بخوام یک مقدار ثابت رو کناری یک مقدار متغیر بزام اینطوری عمل می کنم
textbox1.text="98" + meghdar
98 ثابت هستش و متغیر meghdar همیشه تغییر می کنه حالا از دیتا بیس یا دستا گرید میگیره اگه منظورت این نیست خبر بده

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

Public Sub NumberFact()
StrToday = pc.GetYear(Date.Now).ToString("0000") & "/" & pc.GetMonth(Date.Now).ToString("00") & "/" & pc.GetDayOfMonth(Date.Now).ToString("00") & " " & Date.Now.ToShortTimeString()
Dim StrYear As String = StrToday.Substring(2, 2)
Call ExsistNumber()

If ExistSaleS = True Then
Call MaxSaleNumber()
Dim StrLast As String = LastSaleNumber.Substring(3, 4)

If StrYear = LastSaleNumber.Substring(0, 2) Then
TxtNumberFactor.Text = StrYear & "-" & (Val(StrLast) + 1).ToString("0000")
Else
TxtNumberFactor.Text = StrYear & "-" & "0001"
End If
Else
TxtNumberFactor.Text = StrYear & "-" & "0001"
End If
End Sub

قبل از اون باید یک دستور بنویسی و اول چک کنی که آیا اولین شماره می باشد یا نه به عبارتی آیا آدی جدول مربوطه هنوز صفر می باشد یا خیر
این کد می یاد دو رقم آخر سال سیستم را می گیره مثلا سال 1398 دو رقم آخر آن را که 98 است می گیره و بایک / به عدد که گفتی از صفر شروع کند می چسباند مثلا 98/0001 و الی آخر در سال بعد باز همین کار را می کند و مجدد شماره از یک شروع می شود با این تفاوت که سال فرق کرده مثلا 99/0001
ضمنا باید یک دستور بنویسی که اگر سال عوض شد بیاد از صفر مجدد شروع کنه البته دستور آن ساده است من چون از پروسیجر استفاده کردم اگر متوجه نشدی تا دستور را بصورت سلکت مستقیم قرار بدم اگر وقت کردم می زارم

safari_m4
شنبه 19 بهمن 1398, 20:42 عصر
Private Sub ExsistNumber()

Cmd = New SqlCommand("SELECT Count(NumberFactor) As ExistSale FROM TB_Factor_Sale where ID_Sal=@ID_Sal", Con)

Cmd.Parameters.AddWithValue("@ID_Sal", Val(ID_SalM))
Con.Open()
Dim Dr As SqlDataReader = Cmd.ExecuteReader
If Dr.Read = True Then
NumberFactorSale = Val(Dr("ExistSale").ToString)
End If
Dr.Close()
Con.Close()
If NumberFactorSale = 0 Then
ExistSaleS = False
Else
ExistSaleS = True
End If
End Sub
این دستور جهت مشخص کردن اولین شماره



Private Sub MaxSaleNumber()

Cmd = New SqlCommand("SELECT Top 1 MAX(NumberFactor) As NumberFactor FROM TB_Factor_Sale where ID_Sal=@ID_Sal order by NumberFactor desc", Con)

Cmd.Parameters.AddWithValue("@ID_Sal", Val(ID_SalM))
Con.Open()
Dim Dr As SqlDataReader = Cmd.ExecuteReader
If Dr.Read = True Then
LastSaleNumber = Dr("NumberFactor").ToString()
End If
Con.Close()
End Sub

این کد دیگرش امیدوارم فهمیده باشی ببخشید که من خیلی کم وارد سیستم می شم که اگر مشکلی داشتی جواب بدهم آلان هم چون مشکلی داشتم وارد سیستم شد به هر حال ببخشید

sadeghlinux
شنبه 19 بهمن 1398, 21:13 عصر
سلام خیلی ممنونم
تست می کنم خبر میدم دوستان

sadeghlinux
یک شنبه 27 بهمن 1398, 16:40 عصر
Private Sub ExsistNumber()

Cmd = New SqlCommand("SELECT Count(NumberFactor) As ExistSale FROM TB_Factor_Sale where ID_Sal=@ID_Sal", Con)

Cmd.Parameters.AddWithValue("@ID_Sal", Val(ID_SalM))
Con.Open()
Dim Dr As SqlDataReader = Cmd.ExecuteReader
If Dr.Read = True Then
NumberFactorSale = Val(Dr("ExistSale").ToString)
End If
Dr.Close()
Con.Close()
If NumberFactorSale = 0 Then
ExistSaleS = False
Else
ExistSaleS = True
End If
End Sub
این دستور جهت مشخص کردن اولین شماره



Private Sub MaxSaleNumber()

Cmd = New SqlCommand("SELECT Top 1 MAX(NumberFactor) As NumberFactor FROM TB_Factor_Sale where ID_Sal=@ID_Sal order by NumberFactor desc", Con)

Cmd.Parameters.AddWithValue("@ID_Sal", Val(ID_SalM))
Con.Open()
Dim Dr As SqlDataReader = Cmd.ExecuteReader
If Dr.Read = True Then
LastSaleNumber = Dr("NumberFactor").ToString()
End If
Con.Close()
End Sub

این کد دیگرش امیدوارم فهمیده باشی ببخشید که من خیلی کم وارد سیستم می شم که اگر مشکلی داشتی جواب بدهم آلان هم چون مشکلی داشتم وارد سیستم شد به هر حال ببخشید


سلام

من یه مثال زدم و منظورم این نبود که میخام با سال و ماه کار کنم

داخل برنامه کد مشتری از 1000 شروع میشه

هر مشتری میتونه چندین سفارش داشته باشه

برای اینکه کد سفارش و کد مشتری یکی نشه میخام اینکارو کنم که وقتی کد مشتری من 1000 بود و کد سفارش من هم از 1000 شروع میشه برای اینکه باهم فرق داشته باشه میخام ابتدای تمامی کدهای سفارش عدد 98 یا 99 یا 270 یا هم عدد دیگه ای بیاد . کد مشتری اول میشه 1000 کد مشتری دوم میشه 1001 با فرض اینکه هر مشتری یک سفارش داشته باشه کد سفارش مشتری اول میشه 981000 و کد سفارش مشتری دوم باید بشه 981001 و اگه سفارش جدیدی ثبت شد کدش بشه 981003 و الی اخر . اگه بازم نیاز به توضیح هست خدمت شما عرض کنم

ROSTAM2
دوشنبه 28 بهمن 1398, 09:53 صبح
سلام.

Static Number as Integer = 1000
Number += 1
Dim NewNumber as Integer = Val(String.Format("98{0}", Number))

sadeghlinux
سه شنبه 29 بهمن 1398, 12:01 عصر
سلام.

Static Number as Integer = 1000
Number += 1
Dim NewNumber as Integer = Val(String.Format("98{0}", Number))


ممنونم از پاسخگویی شما
اما چون من میخام هر بار دیتابیس چک بشه باید 98 رو به عنوان ثابت داشته باشم و به 1000 یک واحد اضافه بشه
اگه 10000 رکورد داشته باشم 98 به 99 تبدیل میشه

ROSTAM2
سه شنبه 29 بهمن 1398, 12:10 عصر
ممنونم از پاسخگویی شما
اما چون من میخام هر بار دیتابیس چک بشه باید 98 رو به عنوان ثابت داشته باشم و به 1000 یک واحد اضافه بشه
اگه 10000 رکورد داشته باشم 98 به 99 تبدیل میشه


الآن دقیقا مشکلت کجاست؟ عدد 98؟ می تونید بجای عدد 98 {1} بنویسید و یک متغیر دیگر به پارامترهای تابع Format اضافه کنید که مقدارتون قابل تغییر باشه.



Static Number as Integer = 1000
Number += 1
Dim FNumber as Integer = 98 + ?
Dim NewNumber as Integer = Val(String.Format("{0}{1}", FNumber, Number))

sadeghlinux
سه شنبه 29 بهمن 1398, 13:28 عصر
الآن دقیقا مشکلت کجاست؟ عدد 98؟ می تونید بجای عدد 98 {1} بنویسید و یک متغیر دیگر به پارامترهای تابع Format اضافه کنید که مقدارتون قابل تغییر باشه.



Static Number as Integer = 1000
Number += 1
Dim FNumber as Integer = 98 + ?
Dim NewNumber as Integer = Val(String.Format("{0}{1}", FNumber, Number))



من میخام یه عدد ثابت قبل شماره سفارش قرار بگیره اگه شناسه سفارش ۱ بود یه عدد قبلش باشه من به عنوان مثال ۹۸ گفتم اگه تعداد رکوردهام رسید به ۲۰۰۰۰ رکورد، بازم یه عدد ثابت قبلش قرار بگیره بشه ۹۸۲۰۰۰۰ یا هر عدد دیگه ای به جای ۹۸ که داخل برنامه خودم میدم فقط میخام کدش رو بدونم چجوریه

cjmoon
سه شنبه 29 بهمن 1398, 21:14 عصر
من منظورت رو زیاد متوجه نشدم

اگه من بخوام یک مقدار ثابت رو کناری یک مقدار متغیر بزام اینطوری عمل می کنم
textbox1.text="98" + meghdar
98 ثابت هستش و متغیر meghdar همیشه تغییر می کنه حالا از دیتا بیس یا دستا گرید میگیره اگه منظورت این نیست خبر بده

شما این راهو تست کردین ؟