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

اريد تحويل الكود هذا الى العربي

مغلق
بدأه alhinay في 17 أغسطس 2004 · 11 رد · 1,143 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني الاعزاء السلام عليكم ورحمة الله

ارجو منكم مساعدتي في تحويل هذا الكود الى العربي بدل من الانجليزي

والكود هذا هو لتحويل الارقام الى حروف

Function ConvertCurrencyToEnglish(ByVal MyNumber)

Dim Temp

Dim RialsOmani, Baizas

Dim DecimalPlace, Count

ReDim Place(9) As String

Place(2) = " Thousand "

Place(3) = " Million "

Place(4) = " Billion "

Place(5) = " Trillion "

' Convert MyNumber to a string, trimming extra spaces.

MyNumber = Trim(Str(MyNumber))

' Find decimal place.

DecimalPlace = InStr(MyNumber, ".")

' If we find decimal place...

If DecimalPlace > 0 Then

' Convert Baizas

Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "000", 3)

Baizas = ConvertHundreds(Temp)

' Strip off Baizas from remainder to convert.

MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

End If

Count = 1

Do While MyNumber <> ""

' Convert last 3 digits of MyNumber to English RialsOmani.

Temp = ConvertHundreds(Right(MyNumber, 3))

If Temp <> "" Then RialsOmani = Temp & Place(Count) & RialsOmani

If Len(MyNumber) > 3 Then

' Remove last 3 converted digits from MyNumber.

MyNumber = Left(MyNumber, Len(MyNumber) - 3)

Else

MyNumber = ""

End If

Count = Count + 1

Loop

' Clean up RialsOmani.

Select Case RialsOmani

Case ""

RialsOmani = "No RialsOmani"

Case "One"

RialsOmani = "Rial Omani One"

Case Else

RialsOmani = " Rial Omani " & RialsOmani

End Select

' Clean up Baizas.

Select Case Baizas

Case ""

Baizas = " Only"

Case "One"

Baizas = " And Baizas One"

Case Else

Baizas = " And " & Baizas & " Baizas"

End Select

ConvertCurrencyToEnglish = RialsOmani & Baizas

End Function

Private Function ConvertHundreds(ByVal MyNumber)

Dim Result As String

' Exit if there is nothing to convert.

If Val(MyNumber) = 0 Then Exit Function

' Append leading zeros to number.

MyNumber = Right("000" & MyNumber, 3)

' Do we have a hundreds place digit to convert?

If Left(MyNumber, 1) <> "0" Then

Result = ConvertDigit(Left(MyNumber, 1)) & " Hundred "

End If

' Do we have a tens place digit to convert?

If Mid(MyNumber, 2, 1) <> "0" Then

Result = Result & ConvertTens(Mid(MyNumber, 2))

Else

' If not, then convert the ones place digit.

Result = Result & ConvertDigit(Mid(MyNumber, 3))

End If

ConvertHundreds = Trim(Result)

End Function

Private Function ConvertTens(ByVal MyTens)

Dim Result As String

' Is value between 10 and 19?

If Val(Left(MyTens, 1)) = 1 Then

Select Case Val(MyTens)

Case 10: Result = "Ten"

Case 11: Result = "Eleven"

Case 12: Result = "Twelve"

Case 13: Result = "Thirteen"

Case 14: Result = "Fourteen"

Case 15: Result = "Fifteen"

Case 16: Result = "Sixteen"

Case 17: Result = "Seventeen"

Case 18: Result = "Eighteen"

Case 19: Result = "Nineteen"

Case Else

End Select

Else

' .. otherwise it's between 20 and 99.

Select Case Val(Left(MyTens, 1))

Case 2: Result = "Twenty "

Case 3: Result = "Thirty "

Case 4: Result = "Forty "

Case 5: Result = "Fifty "

Case 6: Result = "Sixty "

Case 7: Result = "Seventy "

Case 8: Result = "Eighty "

Case 9: Result = "Ninety "

Case Else

End Select

' Convert ones place digit.

Result = Result & ConvertDigit(Right(MyTens, 1))

End If

ConvertTens = Result

End Function

Private Function ConvertDigit(ByVal MyDigit)

Select Case Val(MyDigit)

Case 1: ConvertDigit = "One"

Case 2: ConvertDigit = "Two"

Case 3: ConvertDigit = "Three"

Case 4: ConvertDigit = "Four"

Case 5: ConvertDigit = "Five"

Case 6: ConvertDigit = "Six"

Case 7: ConvertDigit = "Seven"

Case 8: ConvertDigit = "Eight"

Case 9: ConvertDigit = "Nine"

Case Else: ConvertDigit = ""

End Select

End Function

#2

في أكواد جاهزة من عمل شباب المنتدى

ما عليك إلا البحث عن تفقيط

وهذا الكود يحتاج للتعديل في حال تحويله للعربية

#3

اخي الكريم ، قم بإنشاء وحدة نمطية جديدة والصق بها هذه الدوال ...

للعلم .. هذه الدوال من عمل الأخ مهند عبادي ..

' دالة التفقيط الآلي
' برمجة محمد مهند عبادي 2003
Function words(D As Double, Optional F1 As String = "واحدة", _
Optional F2 As String, Optional F3 As String, Optional D1 As String = "جزء", _
Optional D2 As String, Optional D3 As String) As String
Dim P, P1, P2, P3, P4, w, w1, w2, w3, N, N1 As String, SI As String
If IsNull(D) Or D = 0 Then
    words = ""
    Exit Function
End If
If D < 0 Then SI = "ناقص"
D = Abs(D)
If F2 = "" Then F2 = F1
If F3 = "" Then F3 = F1
If D2 = "" Then D2 = D1
If D3 = "" Then D3 = D1
P = swords(Int((D - Int(D)) * 100), D1, D2, D3)
N = Format(Str(D), "000000000000")
P1 = swords(Mid(N, 10, 3), F1, F2, F3)
P2 = swords(Mid(N, 7, 3), "ألف", "ألفان", "آلاف")
P3 = swords(Mid(N, 4, 3), "مليون", "مليونان", "ملايين")
P4 = swords(Mid(N, 1, 3), "مليار", "ملياران", "مليارات")

If P4 = "" Or P1 + P2 + P3 = "" Then w3 = "" Else w3 = " و "
If P3 = "" Or P1 + P2 = "" Then w2 = "" Else w2 = " و "
If P2 = "" Or P1 = "" Then w1 = "" Else w1 = " و "
If P1 = "" Then P1 = " " + F1
If P = "" Then w = "" Else w = " و "
words = "فقط " + SI + P4 + w3 + P3 + w2 + P2 + w1 + P1 + w + P + " لاغير"
End Function
Function swords(N, U1, U2, U3 As String) As String
 Dim S(1 To 3), w1, w2, F, A(2, 9) As String
 A(0, 0) = ""
 A(0, 1) = "واحد"
 A(0, 2) = "إثنان"
 A(0, 3) = "ثلاثة"
 A(0, 4) = "أربعة"
 A(0, 5) = "خمسة"
 A(0, 6) = "ستة"
 A(0, 7) = "سبعة"
 A(0, 8) = "ثمانية"
 A(0, 9) = "تسعة"
 A(1, 0) = ""
 A(1, 1) = "عشر"
 A(1, 2) = "عشرون"
 A(1, 3) = "ثلاثون"
 A(1, 4) = "أربعون"
 A(1, 5) = "خمسون"
 A(1, 6) = "ستون"
 A(1, 7) = "سبعون"
 A(1, 8) = "ثمانون"
 A(1, 9) = "تسعون"
 A(2, 0) = ""
 A(2, 1) = "مائة"
 A(2, 2) = "مائتان"
 A(2, 3) = "ثلاثمائة"
 A(2, 4) = "أربعمائة"
 A(2, 5) = "خمسمائة"
 A(2, 6) = "ستمائة"
 A(2, 7) = "سبعمائة"
 A(2, 8) = "ثمانمائة"
 A(2, 9) = "تسعمائة"
 Select Case Val(N)
    Case 1
        swords = U1
        Exit Function
    Case 2
        swords = U2
        Exit Function
    Case 0
        swords = ""
        Exit Function
 End Select
 N = Format(N, "000")
 S(1) = Val(Mid(N, 3, 1))
 S(2) = Val(Mid(N, 2, 1))
 S(3) = Val(Mid(N, 1, 1))
 If S(2) = 0 Or S(1) = 0 Then w2 = "" Else w2 = " و "
 If S(3) = 0 Or Val(Mid(N, 2, 2)) = 0 Then w1 = "" Else w1 = " و "
 If S(2) = 1 Then
    A(0, 1) = "أحد "
    A(0, 2) = "إثنا "
    w2 = " "
 End If
 Select Case Val(Mid(N, 2, 2))
    Case 0
        A(2, 2) = "مائتا "
        F = U1
    Case 3 To 10
        F = U3
    Case 1, 2, Is > 10
        F = U1
 End Select
 swords = A(2, S(3)) + w1 + A(0, S(1)) + w2 + A(1, S(2)) + " " + F
End Function
#4

مشكور اخي الكريم على ردك وجربت الكود الذي ذكرته سابقا ولكن توجد به مشلة ارجو حلها وهي عند ادخال القيمة مثلا 1234.500 يعطي نتيجة خطاء وهي

ألف ومئتان وخمسة وثلاثون ريال وخمسمائة بيسة والمفرض ان تكون

ألف ومئتان وأربعة وثلاثون ريال وخمسمائة بيسة

واذا اخلت قيمة 1234.600 يعطيني

ألف ومئتان وخمسة وثلاثون ريال و خمسمائة وتسع وتسعون بيسة

ارجو تعديل الخطاء ان امكن

تم تعديل هذه المشاركة بواسطة alhinay في 21 أغسطس 2004 في 07:46

#5

هنا يجب أن يتدخل الأخ مهند عبادي لأنه هو من قام مشكوراً بعمل هذه الدالة

بالتوفيق

#6
' دالة التفقيط الآلي
' برمجة محمد مهند عبادي 2003
Function words(D As Double, Optional F1 As String = "واحدة", _
Optional F2 As String, Optional F3 As String, Optional D1 As String = "جزء", _
Optional D2 As String, Optional D3 As String) As String
Dim P As String, P1 As String, P2 As String, P3 As String, P4 As String
Dim w As String, w1 As String, w2 As String, w3 As String, N As String, N1 As String
Dim DI As Long, DS As Long, MI As String
If IsNull(D) Or D = 0 Then
    words = ""
    Exit Function
End If
If F2 = "" Then F2 = F1
If F3 = "" Then F3 = F1
If D2 = "" Then D2 = D1
If D3 = "" Then D3 = D1
If D < 0 Then MI = "ناقص "
D = Abs(D)
DI = Int(D)
DS = (D - DI) * 100
P = swords("0" & DS, D1, D2, D3)
N = Format(Str(DI), "000000000000")
P1 = swords(Mid(N, 10, 3), F1, F2, F3)
P2 = swords(Mid(N, 7, 3), "ألف", "ألفان", "آلاف")
P3 = swords(Mid(N, 4, 3), "مليون", "مليونان", "ملايين")
P4 = swords(Mid(N, 1, 3), "مليار", "ملياران", "مليارات")
If P4 = "" Or P1 + P2 + P3 = "" Then w3 = "" Else w3 = " و "
If P3 = "" Or P1 + P2 = "" Then w2 = "" Else w2 = " و "
If P2 = "" Or P1 = "" Then w1 = "" Else w1 = " و "
If P1 = "" Then P1 = " " + F1
If P = "" Then w = "" Else w = " و "
words = "فقط " + MI + P4 + w3 + P3 + w2 + P2 + w1 + P1 + w + P + " لاغير"
End Function

Function swords(N As String, U1 As String, U2 As String, U3 As String) As String
 Dim S(1 To 3), w1, w2, F, A(2, 9) As String
 A(0, 0) = ""
 A(0, 1) = "واحد"
 A(0, 2) = "إثنان"
 A(0, 3) = "ثلاثة"
 A(0, 4) = "أربعة"
 A(0, 5) = "خمسة"
 A(0, 6) = "ستة"
 A(0, 7) = "سبعة"
 A(0, 8) = "ثمانية"
 A(0, 9) = "تسعة"
 A(1, 0) = ""
 A(1, 1) = "عشر"
 A(1, 2) = "عشرون"
 A(1, 3) = "ثلاثون"
 A(1, 4) = "أربعون"
 A(1, 5) = "خمسون"
 A(1, 6) = "ستون"
 A(1, 7) = "سبعون"
 A(1, 8) = "ثمانون"
 A(1, 9) = "تسعون"
 A(2, 0) = ""
 A(2, 1) = "مائة"
 A(2, 2) = "مائتان"
 A(2, 3) = "ثلاثمائة"
 A(2, 4) = "أربعمائة"
 A(2, 5) = "خمسمائة"
 A(2, 6) = "ستمائة"
 A(2, 7) = "سبعمائة"
 A(2, 8) = "ثمانمائة"
 A(2, 9) = "تسعمائة"
 Select Case Val(N)
    Case 1
        swords = U1
        Exit Function
    Case 2
        swords = U2
        Exit Function
    Case 0
        swords = ""
        Exit Function
 End Select
 N = Format(N, "000")
 S(1) = Val(Mid(N, 3, 1))
 S(2) = Val(Mid(N, 2, 1))
 S(3) = Val(Mid(N, 1, 1))
 If S(2) = 0 Or S(1) = 0 Then w2 = "" Else w2 = " و "
 If S(3) = 0 Or Val(Mid(N, 2, 2)) = 0 Then w1 = "" Else w1 = " و "
 If S(2) = 1 Then
    A(0, 1) = "أحد "
    A(0, 2) = "إثنا "
    w2 = " "
 End If
 Select Case Val(Mid(N, 2, 2))
    Case 0
        A(2, 2) = "مائتا "
        F = U1
    Case 3 To 10
        F = U3
    Case 1, 2, Is > 10
        F = U1
 End Select
 swords = A(2, S(3)) + w1 + A(0, S(1)) + w2 + A(1, S(2)) + " " + F
End Function

تم تعديل هذه المشاركة بواسطة مهند عبادي في 24 أغسطس 2004 في 15:21

#7

هذا ما اعتدناه من مشرفنا العزيز مهند عبادي

#8

بارك الله فيكم جميعا

#9

الأخ مهند عبادي الكود طلعت به مشكلة أخرى وهو عند وضعه في نموذج او تقرير يدعم المبلغ حتى

فقط إثنان و ثلاثون ألف و سبعمائة و سبعة و ستون واحدة لاغير

وان زاد المبلغ عن هذا الحد يعطيني الخطاء التالي

runtime error '6':

overflow

ارجو التكرم وتعديل الخطاء

للعلم

قبل التعديل البق لم تكن هذه المشكلة موجودة

#10

UP UP

#12

أخي مهند والله لقد اخجلتني بكرمك هذا

جزاك الله الف خير ورزق الجنان العلى يارب

صحيح ما يجبها الا رجالها

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…