كيف يمكنني تحويل اي رقم مكتوب بالشكل الرقمي مثل 1500 الى شكل مكتوب باللغة العربية مثل الف و خمس مئة فقط...
طريقة تحويل الرقم الى كتابة
السلام عليكم
هذا يسمى تفقيط الأرقام ...يوجد عدة مواضيع تتكلم عنها و في الكريستال ريبورت ..
و هذا موضوع يشرحه بالتفصيل :
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
السلام عليكم
شكرا جزيلا لمساعدتك اخي على هذا الرابط الرائع و لكن للاسف لم استفد منة لان الكود مكتوب بلغة #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;هنا أداة على النت تحول الكود ..
http://www.developerfusion.com/tools/convert/csharp-to-vb
على فكرة يوجد على النت كود تفقيط بالــ VB.NET .. ابحث عنها .. بعضها فيه مشاكل ..
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
شكرا لك اخي على المساعدة
السلام عليكم ورحمة الله وبركاته
اخي لو كانت المشكلة لتفقيط الارقان موجودة فانا قد تعاملت معها في برنامج معي بال 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
وللمعلومة هذا الكود وجدته بالنت ضمن دالة
اتمنى ان يفيدك الرد
شكرا لك اخي حلت المشكلة