الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقة تحويل الرقم الى كتابة

بدأه ahamdasp1 في 18 نوفمبر 2011 · 6 رد · 3,298 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكنني تحويل اي رقم مكتوب بالشكل الرقمي مثل 1500 الى شكل مكتوب باللغة العربية مثل الف و خمس مئة فقط...

#2

السلام عليكم

هذا يسمى تفقيط الأرقام ...يوجد عدة مواضيع تتكلم عنها و في الكريستال ريبورت ..

و هذا موضوع يشرحه بالتفصيل :

تفقيط الأرقام باللغة العربية

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

السلام عليكم

شكرا جزيلا لمساعدتك اخي على هذا الرابط الرائع و لكن للاسف لم استفد منة لان الكود مكتوب بلغة #c وبعض الجمل لم استطع تحويلها الى لغة vb ... ارجو المساعدة في تحويل هذة الاوامر:

  Byte group = 0;
            while (tempNumber >= 1)
            {
                // seperate number into groups
                int numberToProcess = (int)(tempNumber % 1000);

                tempNumber = tempNumber / 1000;

                // convert group into its text
                string groupDescription = ProcessArabicGroup(numberToProcess, group, Math.Floor(tempNumber));

                group++;
            }

2

  if (hundreds > 0)
            {
                if (tens == 0 && hundreds == 2) // حالة المضاف
                    retVal = String.Format("{0}", arabicAppendedTwos[0]);
                else //  الحالة العادية
                    retVal = String.Format("{0}", arabicHundreds[hundreds]);
          }

3

private string GetDigitFeminineStatus(int digit, int groupLevel)
        {
            if (groupLevel == -1)
            { // if it is in the decimal part
                if (Currency.IsCurrencyPartNameFeminine)
                    return arabicFeminineOnes[digit]; // use feminine field
                else
                    return arabicOnes[digit];
            }
            else
                if (groupLevel == 0)
                { 
                    if (Currency.IsCurrencyNameFeminine)
                        return arabicFeminineOnes[digit];// use feminine field
                    else
                        return arabicOnes[digit];
                }
                else
                    return arabicOnes[digit];
        }

4

       if (_intergerValue != 0)
            { // here we add currency name depending on _intergerValue : 1 ,2 , 3--->10 , 11--->99
                int remaining100 = (int)(_intergerValue % 100);

                if (remaining100 == 0)
                    formattedNumber += Currency.Arabic1CurrencyName;
                else
                    if (remaining100 == 1)
                        formattedNumber += Currency.Arabic1CurrencyName;
                    else
                        if (remaining100 == 2)
                        {
                            if (_intergerValue == 2)
                                formattedNumber += Currency.Arabic2CurrencyName;
                            else
                                formattedNumber += Currency.Arabic1CurrencyName;
                        }
                        else
                            if (remaining100 >= 3 && remaining100 <= 10)
                                formattedNumber += Currency.Arabic310CurrencyName;
                            else
                                if (remaining100 >= 11 && remaining100 <= 99)
                                    formattedNumber += Currency.Arabic1199CurrencyName;
#4

هنا أداة على النت تحول الكود ..

http://www.developerfusion.com/tools/convert/csharp-to-vb

على فكرة يوجد على النت كود تفقيط بالــ VB.NET .. ابحث عنها .. بعضها فيه مشاكل ..

رابط لإحدها

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

شكرا لك اخي على المساعدة

#6

السلام عليكم ورحمة الله وبركاته

اخي لو كانت المشكلة لتفقيط الارقان موجودة فانا قد تعاملت معها في برنامج معي بال vb.net

وذلك اني كنت اريد جعل الارقام تظهر بالكريستال ريبورت بالحروف لذلك انشأت في الكريستال فورمولا جديدة واسميتها totext

وكتبت فيها الكود التالي :

Dim sStrNo, sResult, c1, c2, c3, sMidStrNo As String

Dim nLenNo, nLoop As number

sResult = ""

طبعا هنا استبدل الذي داخل {} باسم الجدول يتبعه اسم العمود الذي فيه الرقم المراد تحويله sStrNo = CStr({sd.fnlout_no})

If Left(Right(sStrNo, 2), 1) = "." Then sStrNo = sStrNo & "0"

If Left(Right(sStrNo, 3), 1) <> "." Then sStrNo = sStrNo & ".00"

sStrNo = Trim(sStrNo)

nLenNo = Len(sStrNo)

nLoop = 1

Do While nLenNo > 0

c1 = ""

c2 = ""

c3 = ""

If nLenNo = 12 Or nLenNo = 9 Or nLenNo = 6 Then

sMidStrNo = Mid(sStrNo, nLoop, 1)

nLenNo = nLenNo - 1

Select Case sMidStrNo

Case "0"

c3 = ""

Case "1"

c3 = "ومائة "

Case "2"

c3 = "ومائتان "

Case "3"

c3 = "وثلاثمائة "

Case "4"

c3 = "واربعمائة "

Case "5"

c3 = "وخمسمائة "

Case "6"

c3 = "وستمائة "

Case "7"

c3 = "وسبعمائة "

Case "8"

c3 = "وثمانمائة "

Case "9"

c3 = "وتسعمائة "

End Select

nLoop = nLoop + 1

End If

If nLenNo = 3 Then

nLoop = nLoop + 1

nLenNo = nLenNo - 1

End If

sMidStrNo = Mid(sStrNo, nLoop, 1)

If nLenNo = 2 Or nLenNo = 5 Or nLenNo = 8 Or nLenNo = 11 Then

Select Case sMidStrNo

Case "0"

c2 = ""

Case "1"

c2 = "عشر "

Case "2"

c2 = "وعشرون "

Case "3"

c2 = "وثلاثون "

Case "4"

c2 = "واربعون "

Case "5"

c2 = "وخمسون "

Case "6"

c2 = "وستون "

Case "7"

c2 = "وسبعون "

Case "8"

c2 = "وثمانون "

Case "9"

c2 = "وتسعون "

End Select

nLenNo = nLenNo - 1

nLoop = nLoop + 1

End If

sMidStrNo = Mid(sStrNo, nLoop, 1)

If nLenNo = 1 Then '

Select Case sMidStrNo

Case "0"

c1 = ""

Case "1"

If c2 = "عشر " Then

c1 = "واحدى "

Else

c1 = "وواحد "

End If

Case "2"

If c2 = "عشر " Then

c1 = "واثنتا "

Else

c1 = "واثناتان "

End If

Case "3"

c1 = "وثلاث "

Case "4"

c1 = "واربع "

Case "5"

c1 = "وخمس "

Case "6"

c1 = "وست "

Case "7"

c1 = "وسبع "

Case "8"

c1 = "وثمان "

Case "9"

c1 = "وتسع "

End Select

Else '

Select Case sMidStrNo

Case "0"

c1 = ""

If c2 = "عشر " Then

c2 = "وعشرة "

End If

Case "1"

If c2 = "عشر " Then

c1 = "واحدى "

Else

c1 = "وواحد "

End If

Case "2"

If c2 = "عشر " Then

c1 = "واثنا "

Else

c1 = "واثنان "

End If

Case "3"

c1 = "وثلاثة "

Case "4"

c1 = "واربعة "

Case "5"

c1 = "وخمسة "

Case "6"

c1 = "وستة "

Case "7"

c1 = "وسبعة "

Case "8"

c1 = "وثمانة "

Case "9"

c1 = "وتسعة "

End Select

End If

nLenNo = nLenNo - 1

nLoop = nLoop + 1

Select Case nLenNo

Case 9

Select Case c1 + c2 + c3

Case "وواحد "

sResult = sResult + "ومليون "

Case "واثنان "

sResult = sResult + "ومليونان"

Case Else

sResult = sResult + c3 + c1 + c2 + "مليون "

End Select

Case 6

Select Case c1 + c2 + c3

Case "وواحد "

sResult = sResult + "والف "

Case "واثنان "

sResult = sResult + "والفان "

Case "وثلاثة "

sResult = sResult + "وثلاثة الاف "

Case "واربعة "

sResult = sResult + "واربعة الاف "

Case "وخمسة "

sResult = sResult + "وخمسة الاف "

Case "وستة "

sResult = sResult + "وستة الاف "

Case "وسبعة "

sResult = sResult + "وسبعة الاف "

Case "وثمانية "

sResult = sResult + "وثمانية الاف "

Case "وتسعة "

sResult = sResult + "وتسعة الاف "

Case Else

If c2 = "وعشرة " Then

sResult = sResult + c3 + c1 + c2 + "الاف "

Else

sResult = sResult + c3 + c1 + c2 + "الف "

End If

End Select

Case 3

If c2 = "" Then

Select Case c1

Case ""

c1 = ""

Case "وواحد "

c1 = ""

Case "واثنان "

c1 = ""

Case "وثلاثة "

c1 = ""

Case "واربعة "

c1 = ""

Case "وخمسة "

c1 = ""

Case "وستة "

c1 = " "

Case "وسبعة "

c1 = ""

Case "وثمانية "

c1 = ""

Case "وتسعة "

c1 = ""

End Select

sResult = sResult + c3 + c1 + c2

Else

sResult = sResult + c3 + c1 + c2 + ""

End If

Case 0

If c1 + c2 <> "" Then

If c2 = "" Then

Select Case c1

Case "وواحد "

sResult = sResult + ""

Case "واثنان "

sResult = sResult + ""

Case Else

sResult = sResult + c1 + ""

End Select

Else

sResult = sResult + c1 + c2 + ""

End If

End If

End Select

Loop

sResult = LTrim(sResult)

nLenNo = Len(sResult) - 1

If Left(sResult, 1) = "و" Then

sResult = Mid(sResult, 2, nLenNo)

End If

formula = sResult

وللمعلومة هذا الكود وجدته بالنت ضمن دالة

اتمنى ان يفيدك الرد

1
#7

شكرا لك اخي حلت المشكلة

مواضيع مشابهة