مشاهدة النسخة كاملة : كتابة المبلغ باللغة العربية في التقارير (التفقيط)
Monzer Osama
07-Jul-2011, 07:59 AM
السلام عليكم ورحمة الله
كمطور تقارير في برنامج جريت بلينز قد تضطر أحيانا لكتابة المبلغ النهائي في بعض التقارير وخصوصا التقارير التي يستلمها العميل أو المورد (مثل الفاتورة - سند القبض - كشف الحساب -طباعة الشيك ... إلخ).
في كاتب التقاريرReport Writer لايمكنك أن تكتب التفقيط باللغة العربية بدون استخدام الـVBA وتكتب كود طويل جدا لترجمة هذه الأرقام الى كلمات ... لذلك
وضعت مايكروسوفت ملف ( Chunk File ) يمكن أن تضعه في مجلد جريت بلينز وتصمح عندك خاصية التفقيط موجودة بدون الحاجة الى استخدام الفيجوال بيسك VBA
قم بتحميل الملف المرفق من الملف التالي
http://www.gp4arab.com/files/Arabic_char_Gp4arab.com.zip
والتعليمات موجودة بالداخل
ملاحظة:
لا تحمل الملف على نسخة جريت بلينز قبل النسخة الثامنة.
والله الموفق
MohammadSalah
07-Jul-2011, 10:11 AM
جزاك الله كل خير
لإن دى كانت مشكله كبيره
لك شكرى
Monzer Osama
07-Jul-2011, 10:24 AM
وإياك أخي محمد
بعد زمان ... وحشتنا يا شيخ .... :)
kh_waleed23
04-Aug-2011, 09:48 AM
اكثر من رائع
عبدالله عمر علي
06-Sep-2011, 05:58 AM
شكرا لكم
مع تحياتي لك العاملين على البرامج
عبدالله عمر علي
Hafandi
06-Sep-2011, 03:36 PM
شكرا جزيلا لك أخي منذر
كان بودي أن أشاركك الفرحة ، ولكن ..:(
يبدو أن هذا الملف لا يفيد إلا في طباعة Payable Checks في البرنامج
للأسف إلى الآن لم تضع مايكروسوفت أمر تفقيط للعربي كما هو لللغة الانجليزية
Monzer Osama
06-Sep-2011, 06:04 PM
ولا يهمك أخي حسن ... والله ما اخرب عليك الفرحة :)
تفضل هذا لكود يظهر لك العربي ....
Public Function ConvertCurrencyToArabic(MyNumber As String) As String
Dim temp
Dim Riyal, Halalah
Dim DecimalPlace, Count, CountDigit
ReDim Place(9) As String
Place(2) = "ÃáÜÜÜÝ æ"
Place(3) = "ãÜáÜíÜæä æ "
Place(4) = "ÈÜáÜíÜæä æ"
Place(5) = "ÊÜÑáíæä æ"
MyNumber = Trim(Str(MyNumber))
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)
Halalah = ConvertTens(temp)
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
CountDigit = 3
Do While MyNumber <> ""
If Left(MyNumber, 1) = "2" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" Then
Riyals = "à áÝÇä æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "2" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" Then
Riyals = "à áÝÇä "
Exit Do
End If
If Left(MyNumber, 1) = "1" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" Then
Riyals = "ÃáÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "1" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" Then
Riyals = "ÃáÝ "
Exit Do
End If
If Left(MyNumber, 1) = "3" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" And CountDigit = 3 Then
Riyals = "ËáÇËÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "3" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" And CountDigit = 3 Then
Riyals = "ËáÇËÉ ÂáÇÝ "
Exit Do
End If
If Left(MyNumber, 1) = "4" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" And CountDigit = 3 Then
Riyals = "ÃÑÈÚÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "4" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" And CountDigit = 3 Then
Riyals = "ÃÑÈÚÉ ÂáÇÝ "
Exit Do
End If
If Left(MyNumber, 1) = "5" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" And CountDigit = 3 Then
Riyals = "ÎãÓÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "5" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" And CountDigit = 3 Then
Riyals = "ÎãÓÉ ÂáÇÝ "
Exit Do
End If
If Left(MyNumber, 1) = "6" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" And CountDigit = 3 Then
Riyals = "ÓÊÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "6" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" And CountDigit = 3 Then
Riyals = "ÓÊÉ ÂáÇÝ "
Exit Do
End If
If Left(MyNumber, 1) = "7" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" And CountDigit = 3 Then
Riyals = "ÓÈÚÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "7" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" And CountDigit = 3 Then
Riyals = "ÓÈÚÉ ÂáÇÝ "
Exit Do
End If
If Left(MyNumber, 1) = "8" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" And CountDigit = 3 Then
Riyals = "ËãÇäíÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "8" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" And CountDigit = 3 Then
Riyals = "ËãÇäíÉ ÂáÇÝ "
Exit Do
End If
If Left(MyNumber, 1) = "9" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) <> "000" And CountDigit = 3 Then
Riyals = "ÊÓÚÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "9" And Len(MyNumber) = 4 And Mid(MyNumber, 2, 3) = "000" And CountDigit = 3 Then
Riyals = "ÊÓÚÉ ÂáÇÝ "
Exit Do
End If
If Left(MyNumber, 2) = "10" And Len(MyNumber) = 5 And Mid(MyNumber, 2, 4) <> "0000" And CountDigit = 3 Then
Riyals = "ÚÔÑÉ ÂáÇÝ æ"
temp = ConvertHundreds(Right(MyNumber, 3))
Riyals = Riyals & temp
Exit Do
End If
If Left(MyNumber, 1) = "1" And Len(MyNumber) = 5 And Mid(MyNumber, 2, 4) = "0000" And CountDigit = 3 Then
Riyals = "ÚÔÑÉ ÂáÇÝ "
Exit Do
End If
temp = ConvertHundreds(Right(MyNumber, 3))
If temp <> "" Then
Riyals = temp & " " & Place(Count) & " " & Riyals
End If
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
CountDigit = CountDigit + 3
Loop
Select Case Riyals
Case ""
Riyals = "áÇíæÌÏ ãÈáÛ"
Case "One"
Riyals = " ÑíÇá æÇÍÜÏ "
Case Else
Riyals = Riyals & " ÑíÜÜÇá "
End Select
Select Case Halalah
Case ""
Halalah = " ÝÞØ áÇ ÛíÑ"
Case "æÇÍÏ"
Halalah = " æ åááÉ æÇÍÏÉ ÝÞØ áÇ ÛíÑ"
Case Else
Halalah = " æ " & Halalah & " åááÉ ÝÞØ áÇ ÛíÑ"
End Select
ConvertCurrencyToArabic = Riyals & Halalah
End Function
Monzer Osama
06-Sep-2011, 06:05 PM
Private Function ConvertHundreds(MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
If Left(MyNumber, 1) <> "0" And Left(MyNumber, 1) <> "1" And Left(MyNumber, 1) <> "2" Then
If Mid(MyNumber, 2, 1) <> "0" Then
Result = ConvertDigit(Left(MyNumber, 1)) & "ãÜÇÆÜÉ æ"
Else
Result = ConvertDigit(Left(MyNumber, 1)) & "ãÜÇÆÜÉ "
End If
End If
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & ConvertTens(Mid(MyNumber, 2))
Else
Result = Result & ConvertDigit(Mid(MyNumber, 3))
End If
If Mid(MyNumber, 1, 1) = "2" And Mid(MyNumber, 2, 2) <> "00" Then
Result = "ãÜÇÆÊÇä æ" & ConvertTens(Mid(MyNumber, 2))
Else
If Mid(MyNumber, 1, 1) = "2" And Mid(MyNumber, 2, 2) = "00" Then
Result = "ãÜÇÆÊÇä "
End If
End If
If Mid(MyNumber, 2, 2) <> "00" And Mid(MyNumber, 1, 1) = "1" Then
Result = "ãÜÇÆÜÉ æ " & ConvertTens(Mid(MyNumber, 2))
Else
If Mid(MyNumber, 2, 2) = "00" And Mid(MyNumber, 1, 1) = "1" Then
Result = "ãÜÇÆÜÉ "
End If
End If
ConvertHundreds = Trim(Result)
End Function
Private Function ConvertTens(Mytens)
Dim Result As String
If Val(Left(Mytens, 1)) = 1 Then
Select Case Val(Mytens)
Case 10: Result = " ÚÔÜÑÉ "
Case 11: Result = " ÅÍÏì ÚÔÜÑ "
Case 12: Result = " ÅËäÜí ÚÔÜÑ "
Case 13: Result = " ËáÇËÉ ÚÔÜÑ "
Case 14: Result = " ÃÑÈÚÜÉ ÚÔÜÑ "
Case 15: Result = " ÎãÓÜÉ ÚÔÜÑ "
Case 16: Result = " ÓÜÊÉ ÚÔÜÑ "
Case 17: Result = " ÓÜÈÚÉ ÚÔÜÑ "
Case 18: Result = " ËãÇäíÜÉ ÚÔÜÑ "
Case 19: Result = " ÊÓÜÚÉ ÚÔÜÑ "
Case Else
End Select
Else
Select Case Val(Left(Mytens, 1))
Case 2: Result = " ÚÔÜÑæä "
Case 3: Result = " ËÜáÇËæä "
Case 4: Result = " ÃÑÈÚÜæä "
Case 5: Result = " ÎãÓÜÜæä "
Case 6: Result = " ÓÜÜÊæä "
Case 7: Result = " ÓÜÜÈÚæä "
Case 8: Result = " ËÜãÜÇäæä "
Case 9: Result = " ÊÓÜÜÚæä "
Case Else
End Select
If Val(Right(Mytens, 1)) = "0" Then
Result = ConvertDigit(Right(Mytens, 1)) & Result
Else
Result = ConvertDigit(Right(Mytens, 1)) & " æ" & Result
End If
End If
ConvertTens = Result
End Function
Private Function ConvertDigit(MyDigit)
Select Case Val(MyDigit)
Case 1: ConvertDigit = "æÇÍÜÏ"
Case 2: ConvertDigit = "ÅËÜäÜÇä"
Case 3: ConvertDigit = "ËÜáÇË"
Case 4: ConvertDigit = "ÃÑÈÜÚ"
Case 5: ConvertDigit = "ÎãÜÓ"
Case 6: ConvertDigit = "ÓÜÊ"
Case 7: ConvertDigit = "ÓÜÈÜÚ"
Case 8: ConvertDigit = "ËãÇä"
Case 9: ConvertDigit = "ÊÜÓÜÚ"
End Select
End Function
Private Sub Report_BeforePF(SuppressBand As Boolean)
arabic.Value = Trim(ConvertCurrencyToArabic(NetWagesPayRun.Value) )
End Sub
فقط أضف حقل calculated Feild بالريبورت وسميه arabic وأضفه للفيجوال بيسك[/code]
Hafandi
06-Sep-2011, 06:53 PM
يسلموا على الكود
أنا بالفعل لدي كود لتفقيط العربي ( طبعا ليس بهذه الاحترافية :D )
ولكن الحسرة هو عدم اهتمام مايكروسوفت بتوفير دعم هذا التفقيط مثل التفقيط الانجليزي ، مع كبر حجم سوق gp في المنطقة :cool:
yousif1
03-Nov-2011, 08:14 AM
مشكووووووووووووووووووووور
kh_waleed23
05-Nov-2011, 06:40 PM
ملف موديل
اضف هذا الموديل في الفيجوال بيسك
----------------------------
واذا اردت أن تفقط أي حقل أو Filed
<حقل التفقيط> = Replace(WriteNo(CStr(جقل المراد تفقيطه>), 0), " ريال ", "")
,g;l hgjpdm
زاهرعبدالرحمن
25-Feb-2012, 05:06 PM
ياشباب رجاء تفقيط الداتا ريبورت عندما يكون لدي مجموع بآخر التقرير
وكيف تمرير التفقيط بلغة الفيجوال بيسك 6
Monzer Osama
26-Feb-2012, 07:02 AM
ياشباب رجاء تفقيط الداتا ريبورت عندما يكون لدي مجموع بآخر التقرير
وكيف تمرير التفقيط بلغة الفيجوال بيسك 6
ألم ينفع معك رد الأخkh_waleed23 ؟
زاهرعبدالرحمن
27-Feb-2012, 07:29 AM
أناكلامي تفقيط مجموع عمود ما يظهر في نهاية التقريركمجموع عمود الرواتب لموظفين
Monzer Osama
27-Feb-2012, 08:04 AM
وهذا هو المقصود أيضا...http://www.gp4arab.com/forum/showpost.php?p=3363&postcount=11
كل ما عليك هو إضافة الحقل الذي فيه رقم (مثلا حقل مجموع الرواتب للموظفين ) الى الفيجوال بيسك من خلال الريبورت رايتر وبعدها تمرره الى الـ Function ليستبدل لك الأحرف بدل الأرقام وانت وقتها يجب عليك أن تضيف Calucalted Field في الـReport writer وتضع فيه قيمة الأحرف .... بلغنا لو واجهت صعوبة ..
زاهرعبدالرحمن
27-Feb-2012, 08:43 AM
لاأدري إن كان سؤالي واضح أو أنه الغموض يخيم عليه
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
زاهرعبدالرحمن
27-Feb-2012, 09:54 AM
الله يجزاكم كل خير بس أقصدأنهأظهر ريبورت كامل و الإجمالي أسفل الصفحة
كأرقاممن خلال function المجموع الموجود بصفحة تصميم الداتا ريبورت
و لكن تحويل الرقم لكاتبة ؟؟؟؟
هل يمكن مثال بسيط من أجل هذه المشلكة
ahmedzico
02-Mar-2012, 08:19 AM
عذرا اخي زاهر
ماذا تقصد بالــ الداتا ريبورت ؟؟
هل تعمل تقرير في فجوال بيسيك 6 بهذا الكنترول ام ماذا ؟
فالمشاركات الحالية تتكلم عن التفقيط فيما يسمى بالريبورت رايتر وهي موجودة مع الجريت بلينز .
ارجو التوضيح مع الشكر
زاهرعبدالرحمن
14-Mar-2012, 02:30 PM
مرحبا شباب قصدي الداتا ريبورت اللي مع الفيجوال بيسك 6
انا وضعت Sum(amount) هو ال function الذي يحسب مجموع الحقل amount
لكن أريد وضع الرقم كتابة في نهاية التقرير
خير الله
24-May-2012, 05:28 PM
ِشكرا على الجهد الرائع
alouma
07-Aug-2012, 08:27 AM
meciiiiiiiiiiiiii
hishamglal65
07-Jan-2013, 06:42 AM
شكرا لك استاذنا الجليل على توفيركم هذا الكود الجميل الهام لكل من يعمل فى هذا المجال
:)
ahmed gendy gp
08-Nov-2013, 12:08 PM
مشكور مقع لمساعدة العاملين في مجال erp
ahmed gendy gp
08-Nov-2013, 12:36 PM
عند إضافة الملف الخاص بالتفقيط العربي يحدث الاتي :
1-لا يفتح الجريت بلينز بالعربي
2- وعند إضافته لمجلد الجريت بلينز لا يظهر بالفاتورة
أرجو الرد بسرعة من فضلكم ولكم جزيل الشكر والاحترام
as_radwan
08-Nov-2013, 11:01 PM
عند إضافة الملف الخاص بالتفقيط العربي يحدث الاتي :
1-لا يفتح الجريت بلينز بالعربي
2- وعند إضافته لمجلد الجريت بلينز لا يظهر بالفاتورة
أرجو الرد بسرعة من فضلكم ولكم جزيل الشكر والاحترام
الرد علي الفقرة الثانية هي:
1- وضع صلاحية للمستخدمين علي التقارير المعدلة
2-لابد من التأكد من التعامل بشكل صحيح مع الحقل الجديد المضاف
3-حاول ان تجرب علي نسخة غير معربة في البداية لضمان سلامة عملية التفقيط
اذا تمت بنجاح فقم بالاتصال علي الشركة صاحبة النسخة العربية لتقوم بحل المشكلة الاولي.
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.