PDA

View Full Version : سوال: جدا کردن سه رقم سه رقم مقادیر در TextBox



omid_reza
پنج شنبه 02 اردیبهشت 1389, 21:48 عصر
با سلام به دوستان عزیز
من در TextBoxموجود در VB.Net می خواهم مقادیری که بر حسب ریال وارد می شود ، سه رقم سه ررقم با کاما از هم جدا شوند ( در هنگام ورود اطلاعات )
اگر در این کمکم کنید ممنون می شوم
البته در این سایت جستجو کردم اما موردی که جامع باشد را پیدا نکردم و مقداری عجله دارم
با تشکر ::افسرده:

msadgd
پنج شنبه 02 اردیبهشت 1389, 23:57 عصر
اول ماژول زیر رو add کن



Module Module2
'Option Explicit
Private Const hezar = " هزار"
Private Const melun = " میلیون"
Private Const melyard = " میلیارد"
Private Const va = " و "
Private Const ryal = " ريال"

Public Function heji_adad(ByVal adad As Double) As String
Dim hooroof As String
Dim SS As Integer 'sadgan
Dim hh As Integer 'hezargan
Dim mm As Integer 'melungan
Dim yy As Integer 'melyardgan
Dim STRadad As String
Dim LENadad As Integer

STRadad = Str(Val(Str(adad)))
LENadad = Len(STRadad)

Select Case adad
Case Is = 0
hooroof = "صفر" + ryal
Case 1 To 999
hooroof = Adad_Heji(adad) + ryal
Case 1000 To 999999
If (adad Mod 1000 = 0) Then hooroof = Adad_Heji(Int(adad / 1000)) + hezar + ryal
If (adad Mod 1000 <> 0) Then hooroof = Adad_Heji(Int(adad / 1000)) + hezar + va + (Adad_Heji(adad Mod 1000)) + ryal
Case 1000000 To 999999999
SS = Val(Right$(STRadad, 3))
hh = Val(Mid$(STRadad, LENadad - 5, 3))
mm = Val(Left$(STRadad, LENadad - 6))
If (SS = 0 And hh = 0) Then hooroof = Adad_Heji(mm) + melun + ryal
If (SS = 0 And hh <> 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + ryal
If (SS <> 0 And hh = 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(SS) + ryal
If (SS <> 0 And hh <> 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + va + Adad_Heji(SS) + ryal
Case 1000000000 To 999999999999.0#
SS = Val(Right$(STRadad, 3))
hh = Val(Mid$(STRadad, LENadad - 5, 3))
mm = Val(Mid$(STRadad, LENadad - 8, 3))
yy = Val(Left$(STRadad, LENadad - 9))
If (SS = 0 And hh = 0 And mm = 0) Then hooroof = Adad_Heji(yy) + melyard + ryal
If (SS = 0 And hh = 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + ryal
If (SS = 0 And hh <> 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + ryal
If (SS <> 0 And hh <> 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + va + Adad_Heji(SS) + ryal
Case Is > 999999999999.0#
hooroof = "عدد وارد شده بزرگتر از 999,999,999,999 است"
End Select
heji_adad = hooroof
End Function

Private Function Adad_Heji(ByVal adad As Integer) As String
Dim yekan As Byte
Dim dahgan As Byte
Dim sadgan As Byte
Dim behooroof As String
Dim heji(19) As String
Dim heji_dahgan(9) As String
Dim heji_sadgan(9) As String
'-------------------------------
heji(1) = "یک" : heji(2) = "دو" : heji(3) = "سه" : heji(4) = "چهار" : heji(5) = "پنج"
heji(6) = "شش" : heji(7) = "هفت" : heji(8) = "هشت" : heji(9) = "نه" : heji(10) = "ده"
heji(11) = "یازده" : heji(12) = "دوازده" : heji(13) = "سیزده" : heji(14) = "چهارده" : heji(15) = "پانزده"
heji(16) = "شانزده" : heji(17) = "هفده" : heji(18) = "هیجده" : heji(19) = "نوزده"
'-------------------------------
heji_dahgan(1) = "ده"
heji_dahgan(2) = "بیست"
heji_dahgan(3) = "سی" : heji_dahgan(4) = "چهل" : heji_dahgan(5) = "پنجاه"
heji_dahgan(6) = "شصت" : heji_dahgan(7) = "هفتاد" : heji_dahgan(8) = "هشتاد"
heji_dahgan(9) = "نود"
'-------------------------------
heji_sadgan(1) = "یکصد" : heji_sadgan(2) = "دویست" : heji_sadgan(3) = "سیصد"
heji_sadgan(4) = "چهارصد" : heji_sadgan(5) = "پانصد" : heji_sadgan(6) = "ششصد"
heji_sadgan(7) = "هفتصد" : heji_sadgan(8) = "هشتصد" : heji_sadgan(9) = "نهصد"
'-------------------------------
yekan = adad Mod 10
dahgan = adad Mod 100
sadgan = Int(adad / 100)
'-------------------------------
If dahgan < 20 Then
If (sadgan = 0) Then behooroof = heji(dahgan)
If (sadgan <> 0) Then behooroof = heji_sadgan(sadgan) + va + heji(dahgan)
If (yekan = 0 And dahgan = 0) Then behooroof = heji_sadgan(sadgan)
Else
dahgan = (adad Mod 100) - yekan
If (sadgan = 0 And yekan = 0) Then behooroof = heji_dahgan(dahgan / 10)
If (sadgan = 0 And yekan <> 0) Then behooroof = heji_dahgan(dahgan / 10) + va + heji(yekan)
If (sadgan <> 0 And yekan = 0) Then behooroof = heji_sadgan(sadgan) + va + heji_dahgan(dahgan / 10)
If (sadgan <> 0 And yekan <> 0) Then behooroof = heji_sadgan(sadgan) + va + heji_dahgan(dahgan / 10) + va + heji(yekan)
End If

Adad_Heji = behooroof
End Function

End Module


بعد توی رویداد text chang مربوط به textbox کد زیر رو قرار بده





If TextBox.Text <> "" Then
TextBox.Text = Format(TextBox.Text, Nothing)
TextBox.Text = Format(CDbl(TextBox.Text), "##,0")
TextBox.Select(TextBox.Text.Length, 1)
Label.Text = heji_adad(TextBox.Text)
ElseIf TextBox.Text = "" Then
Label.Text = ""
End If

morrning
جمعه 03 اردیبهشت 1389, 09:37 صبح
اول ماژول زیر رو add کن



Module Module2
'Option Explicit
Private Const hezar = " هزار"
Private Const melun = " میلیون"
Private Const melyard = " میلیارد"
Private Const va = " و "
Private Const ryal = " ريال"

Public Function heji_adad(ByVal adad As Double) As String
Dim hooroof As String
Dim SS As Integer 'sadgan
Dim hh As Integer 'hezargan
Dim mm As Integer 'melungan
Dim yy As Integer 'melyardgan
Dim STRadad As String
Dim LENadad As Integer

STRadad = Str(Val(Str(adad)))
LENadad = Len(STRadad)

Select Case adad
Case Is = 0
hooroof = "صفر" + ryal
Case 1 To 999
hooroof = Adad_Heji(adad) + ryal
Case 1000 To 999999
If (adad Mod 1000 = 0) Then hooroof = Adad_Heji(Int(adad / 1000)) + hezar + ryal
If (adad Mod 1000 <> 0) Then hooroof = Adad_Heji(Int(adad / 1000)) + hezar + va + (Adad_Heji(adad Mod 1000)) + ryal
Case 1000000 To 999999999
SS = Val(Right$(STRadad, 3))
hh = Val(Mid$(STRadad, LENadad - 5, 3))
mm = Val(Left$(STRadad, LENadad - 6))
If (SS = 0 And hh = 0) Then hooroof = Adad_Heji(mm) + melun + ryal
If (SS = 0 And hh <> 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + ryal
If (SS <> 0 And hh = 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(SS) + ryal
If (SS <> 0 And hh <> 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + va + Adad_Heji(SS) + ryal
Case 1000000000 To 999999999999.0#
SS = Val(Right$(STRadad, 3))
hh = Val(Mid$(STRadad, LENadad - 5, 3))
mm = Val(Mid$(STRadad, LENadad - 8, 3))
yy = Val(Left$(STRadad, LENadad - 9))
If (SS = 0 And hh = 0 And mm = 0) Then hooroof = Adad_Heji(yy) + melyard + ryal
If (SS = 0 And hh = 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + ryal
If (SS = 0 And hh <> 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + ryal
If (SS <> 0 And hh <> 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + va + Adad_Heji(SS) + ryal
Case Is > 999999999999.0#
hooroof = "عدد وارد شده بزرگتر از 999,999,999,999 است"
End Select
heji_adad = hooroof
End Function

Private Function Adad_Heji(ByVal adad As Integer) As String
Dim yekan As Byte
Dim dahgan As Byte
Dim sadgan As Byte
Dim behooroof As String
Dim heji(19) As String
Dim heji_dahgan(9) As String
Dim heji_sadgan(9) As String
'-------------------------------
heji(1) = "یک" : heji(2) = "دو" : heji(3) = "سه" : heji(4) = "چهار" : heji(5) = "پنج"
heji(6) = "شش" : heji(7) = "هفت" : heji(8) = "هشت" : heji(9) = "نه" : heji(10) = "ده"
heji(11) = "یازده" : heji(12) = "دوازده" : heji(13) = "سیزده" : heji(14) = "چهارده" : heji(15) = "پانزده"
heji(16) = "شانزده" : heji(17) = "هفده" : heji(18) = "هیجده" : heji(19) = "نوزده"
'-------------------------------
heji_dahgan(1) = "ده"
heji_dahgan(2) = "بیست"
heji_dahgan(3) = "سی" : heji_dahgan(4) = "چهل" : heji_dahgan(5) = "پنجاه"
heji_dahgan(6) = "شصت" : heji_dahgan(7) = "هفتاد" : heji_dahgan(8) = "هشتاد"
heji_dahgan(9) = "نود"
'-------------------------------
heji_sadgan(1) = "یکصد" : heji_sadgan(2) = "دویست" : heji_sadgan(3) = "سیصد"
heji_sadgan(4) = "چهارصد" : heji_sadgan(5) = "پانصد" : heji_sadgan(6) = "ششصد"
heji_sadgan(7) = "هفتصد" : heji_sadgan(8) = "هشتصد" : heji_sadgan(9) = "نهصد"
'-------------------------------
yekan = adad Mod 10
dahgan = adad Mod 100
sadgan = Int(adad / 100)
'-------------------------------
If dahgan < 20 Then
If (sadgan = 0) Then behooroof = heji(dahgan)
If (sadgan <> 0) Then behooroof = heji_sadgan(sadgan) + va + heji(dahgan)
If (yekan = 0 And dahgan = 0) Then behooroof = heji_sadgan(sadgan)
Else
dahgan = (adad Mod 100) - yekan
If (sadgan = 0 And yekan = 0) Then behooroof = heji_dahgan(dahgan / 10)
If (sadgan = 0 And yekan <> 0) Then behooroof = heji_dahgan(dahgan / 10) + va + heji(yekan)
If (sadgan <> 0 And yekan = 0) Then behooroof = heji_sadgan(sadgan) + va + heji_dahgan(dahgan / 10)
If (sadgan <> 0 And yekan <> 0) Then behooroof = heji_sadgan(sadgan) + va + heji_dahgan(dahgan / 10) + va + heji(yekan)
End If

Adad_Heji = behooroof
End Function

End Module


بعد توی رویداد text chang مربوط به textbox کد زیر رو قرار بده





If TextBox.Text <> "" Then
TextBox.Text = Format(TextBox.Text, Nothing)
TextBox.Text = Format(CDbl(TextBox.Text), "##,0")
TextBox.Select(TextBox.Text.Length, 1)
Label.Text = heji_adad(TextBox.Text)
ElseIf TextBox.Text = "" Then
Label.Text = ""
End If







لازم نیست این همه کد بنویسی !:متعجب:

از maskedtextbox استفاده کن و مورد جدا سازیش رو به 000,000,000 تغییر بده

msadgd
جمعه 03 اردیبهشت 1389, 13:55 عصر
لازم نیست این همه کد بنویسی !:متعجب:

از maskedtextbox استفاده کن و مورد جدا سازیش رو به 000,000,000 تغییر بده

از ماسک که بله اما اگه نخواد از اون استفاده کنه مثل همون textbox که خودشون گفته بودن

Open-Source
جمعه 03 اردیبهشت 1389, 21:50 عصر
توی رویداد TextChange تکست باکس این کد رو بنویس:


Dim n As Int64
Dim s As String
Try
s = TextBox1.Text.Replace(",", "")
n = Convert.ToInt64(s)
TextBox1.Text = n.ToString("#,#")
TextBox1.Select(TextBox1.Text.Length, 1)
Catch ex As Exception
End Try

ehsan-68
پنج شنبه 06 مهر 1391, 12:34 عصر
توی رویداد TextChange تکست باکس این کد رو بنویس:


Dim n As Int64
Dim s As String
Try
s = TextBox1.Text.Replace(",", "")
n = Convert.ToInt64(s)
TextBox1.Text = n.ToString("#,#")
TextBox1.Select(TextBox1.Text.Length, 1)
Catch ex As Exception
End Try


کد خوبیه، جواب داد فقط یه مشکلی داره؛ اونم اینکه من تو برنامم چون مبلغی رو که وارد میکنم باید + 5% بکنه خروجی رو درست نشون نمیده ...

مثلاً :

100,000 + 5% = 105 ؟!:متعجب:

باید بشه :

100,000 + 5% = 105,000

چرا سه تا صفر قبل از , رو حذف میکنه ؟ :متفکر:

راستی زمانیکه میخواد تویه دیتابیس هم ذخیره بشه همینجوری ذخیره میشه ؟ اگه فیلدم Nvarchar بود چی ؟

damanpak
پنج شنبه 06 مهر 1391, 12:52 عصر
کد خوبیه، جواب داد فقط یه مشکلی داره؛ اونم اینکه من تو برنامم چون مبلغی رو که وارد میکنم باید + 5% بکنه خروجی رو درست نشون نمیده ...

مثلاً :

100,000 + 5% = 105 ؟!:متعجب:

باید بشه :

100,000 + 5% = 105,000

چرا سه تا صفر قبل از , رو حذف میکنه ؟ :متفکر:

سلام دوست عزیز
واسه حل این مشکل باید کدی بنویسی که مثلا 45,000 رو به 45000 تبدیل کنه بعد درصدی که میخوای رو بهش اضافه کن و دوباره به حالت سه رقم سه رقم تبدیلش کن

ehsan-68
پنج شنبه 06 مهر 1391, 13:05 عصر
سلام دوست عزیز
واسه حل این مشکل باید کدی بنویسی که مثلا 45,000 رو به 45000 تبدیل کنه بعد درصدی که میخوای رو بهش اضافه کن و دوباره به حالت سه رقم سه رقم تبدیلش کن


یعنی چجوری آخه باز چه کدی بنویسم که اینکارو بکنه ؟

میگم نمیشه از Maskedtextbox استفاه کرد ؟ اونوقت تویه خروجی مشکلی پیش نمیاد ؟

damanpak
پنج شنبه 06 مهر 1391, 20:31 عصر
یعنی چجوری آخه باز چه کدی بنویسم که اینکارو بکنه ؟

میگم نمیشه از Maskedtextbox استفاه کرد ؟ اونوقت تویه خروجی مشکلی پیش نمیاد ؟

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

nowar1352
جمعه 07 مهر 1391, 12:50 عصر
توی رویداد TextChange تکست باکس این کد رو بنویس:


Dim n As Int64
Dim s As String
Try
s = TextBox1.Text.Replace(",", "")
n = Convert.ToInt64(s)
TextBox1.Text = n.ToString("#,#")
TextBox1.Select(TextBox1.Text.Length, 1)
Catch ex As Exception
End Try


دوست عزیز اشکال این کد اینه که تکس باکس ارزش عددی خودش رو از دست میده اما روش دوست مان
msadgd (http://barnamenevis.org/member.php?13591-msadgd)
http://barnamenevis.org/images/statusicon/user-offline.pngارزش عددی شو حفظ میکنه

nowar1352
جمعه 07 مهر 1391, 12:52 عصر
سلام دوست عزیز
واسه حل این مشکل باید کدی بنویسی که مثلا 45,000 رو به 45000 تبدیل کنه بعد درصدی که میخوای رو بهش اضافه کن و دوباره به حالت سه رقم سه رقم تبدیلش کن


دوست عزیز آخه چیکاریه از کد همو msadgd (http://barnamenevis.org/member.php?13591-msadgd)
استفاده کن دیگه نیازی به بر گشت نداری

http://barnamenevis.org/images/statusicon/user-offline.png