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

حل مشكلة الارقام العربي

بدأه KARIMSOFT في 4 سبتمبر 2010 · 24 رد · 9,035 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف الحال

كل عام والريق العربي بالف خير

حل مشكلة الارقام العربي بوضع كود في الحقل المراد تحويله في format editor-->Display string ويتم كتابة هذا الكود

// number field 
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
        totext(CurrentFieldValue,0)
                                    ,'0' , ChrW (1632)
                                   ),'1' , ChrW (1633)
                                   ),'2' , ChrW (1634)
                                   ),'3' , ChrW (1635)
                                   ),'4' , ChrW (1636)
                                   ),'5' , ChrW (1637)
                                   ),'6' , ChrW (1638)
                                   ),'7' , ChrW (1639)
                                   ),'8' , ChrW (1640)
                                   ),'9' , ChrW (1641)
                                   )

// string field 
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
      CurrentFieldValue
                                    ,'0' , ChrW (1632)
                                   ),'1' , ChrW (1633)
                                   ),'2' , ChrW (1634)
                                   ),'3' , ChrW (1635)
                                   ),'4' , ChrW (1636)
                                   ),'5' , ChrW (1637)
                                   ),'6' , ChrW (1638)
                                   ),'7' , ChrW (1639)
                                   ),'8' , ChrW (1640)
                                   ),'9' , ChrW (1641)
                                   )

ارقام عربي ولا يتم تغير نوع الحقل

NumberEn2Ar.rar

1
#2
KARIMSOFT كتب:

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

كيف الحال

كل عام والريق العربي بالف خير

حل مشكلة الارقام العربي بوضع كود في الحقل المراد تحويله في format editor-->Display string ويتم كتابة هذا الكود

// number field 
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
        totext(CurrentFieldValue,0)
                                    ,'0' , ChrW (1632)
                                   ),'1' , ChrW (1633)
                                   ),'2' , ChrW (1634)
                                   ),'3' , ChrW (1635)
                                   ),'4' , ChrW (1636)
                                   ),'5' , ChrW (1637)
                                   ),'6' , ChrW (1638)
                                   ),'7' , ChrW (1639)
                                   ),'8' , ChrW (1640)
                                   ),'9' , ChrW (1641)
                                   )

// string field 
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
      CurrentFieldValue
                                    ,'0' , ChrW (1632)
                                   ),'1' , ChrW (1633)
                                   ),'2' , ChrW (1634)
                                   ),'3' , ChrW (1635)
                                   ),'4' , ChrW (1636)
                                   ),'5' , ChrW (1637)
                                   ),'6' , ChrW (1638)
                                   ),'7' , ChrW (1639)
                                   ),'8' , ChrW (1640)
                                   ),'9' , ChrW (1641)
                                   )

or

//string 
Local StringVar str :=CurrentFieldValue;
Local numberVar  i:=0;
for  i:=0  to 9 do
    str:=Replace(str,totext(i,0) , ChrW (i+1632));
str

//number 
Local StringVar str :=totext(CurrentFieldValue,0);
Local numberVar  i:=0;
for  i:=0  to 9 do
    str:=Replace(str,totext(i,0) , ChrW (i+1632));
str

ارقام عربي ولا يتم تغير نوع الحقل

NumberEn2Ar.rar

1
#3

شكرا لك

جربته ولكن ما عرفت أعمله على حقل التاريخ

إذا كان عندك طريقة للتاريخ يا ليت لو تساعدني فيها

#4
// date field 
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
    cstr(cdate(CurrentFieldValue),"yyyy/MM/dd")
                                    ,'0' , ChrW (1632)
                                   ),'1' , ChrW (1633)
                                   ),'2' , ChrW (1634)
                                   ),'3' , ChrW (1635)
                                   ),'4' , ChrW (1636)
                                   ),'5' , ChrW (1637)
                                   ),'6' , ChrW (1638)
                                   ),'7' , ChrW (1639)
                                   ),'8' , ChrW (1640)
                                   ),'9' , ChrW (1641)
                                   )
1
#5

شكراً اخي وبارك الله فيك

لكن ممكن توضيح اكثر عن كيفية اضافة الكود

لم اجد format editor

#6

right cilck on the field and select Format field then Display String ,wirt the code

like this image

post-2727-060576600 1328229514_thumb.gif

المرفقات
untitled.GIF

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 3 فبراير 2012 في 03:38

1
#7
KARIMSOFT كتب:

right cilck on the field and select Format field then Display String ,wirt the code

like this image

جزاك الله خيراً اخي. بحثت كثيراً عن طريقة لتغير الارقام للعربي واستخدمت خطوط كثيرة ولم تنفع والحمد لله وجدت موضوعك هذا

شكراً لك مرة اخرى

لكن الارقام الظاهرة تكون بها فاصلة هكذا : 57,329

هل توجد طريقة لحذف الفاصلة ؟

#8

لا شكر علي واجب

جبر هذا التعديل

Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
        totext(CurrentFieldValue,0)
                                    ,'0' , ChrW (1632)
                                   ),'1' , ChrW (1633)
                                   ),'2' , ChrW (1634)
                                   ),'3' , ChrW (1635)
                                   ),'4' , ChrW (1636)
                                   ),'5' , ChrW (1637)
                                   ),'6' , ChrW (1638)
                                   ),'7' , ChrW (1639)
                                   ),'8' , ChrW (1640)
                                   ),'9' , ChrW (1641)
                                   ),',' , '')
1
#9
KARIMSOFT كتب:

لا شكر علي واجب

جبر هذا التعديل

Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
        totext(CurrentFieldValue,0)
                                    ,'0' , ChrW (1632)
                                   ),'1' , ChrW (1633)
                                   ),'2' , ChrW (1634)
                                   ),'3' , ChrW (1635)
                                   ),'4' , ChrW (1636)
                                   ),'5' , ChrW (1637)
                                   ),'6' , ChrW (1638)
                                   ),'7' , ChrW (1639)
                                   ),'8' , ChrW (1640)
                                   ),'9' , ChrW (1641)
                                   ),',' , '')

نحجت معي. بارك الله فيك

#10

لا شكرا علي واجب

#11

اخي KARIMSOFT

 

جربت نفس الخطوات ونجحت معي 100 %

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

فهل من الممكن اضافة كود جديد ملحق لنفس كودك لتعريب التاريخ مهما كان التقويم المستخدم في Contro Panel سواء ميلادي او هجري

ولكم جزيل الشكر

#12

جرب هذا التعديل ولكن غير syntax في المحرر الي الفيجول

Dim gDate As Date
gDate=CurrentDate

Dim jd As Number   
Dim I As Number
Dim N As Number
Dim J As Number
Dim K As Number
Dim H As Number

Dim D As Number
Dim M As Number
Dim Y As Number

D = Day(gDate)
M = Month(gDate)
Y = Year(gDate)


    If ((Y > 1582) Or ((Y = 1582) And (M > 10)) Or ((Y = 1582) And (M = 10) And (D > 14))) Then
      jd = Fix((1461 * (Y + 4800 + Fix((M - 14) / 12))) / 4) + Fix((367 * (M - 2 - 12 * (Fix((M - 14) / 12)))) / 12) - Fix((3 * (Fix((Y + 4900 + Fix((M - 14) / 12)) / 100))) / 4) + D - 32075
    Else
      jd = 367 * Y - Fix((7 * (Y + 5001 + Fix((M - 9) / 7))) / 4) + Fix((275 * M) / 9) + D + 1729777
    End If
    I = jd - 1948440 + 10632
    N = Fix((I - 1) / 10631)
    I = I - 10631 * N + 354
    J = (Fix((10985 - I) / 5316)) * (Fix((50 * I) / 17719)) + (Fix(I / 5670)) * (Fix((43 * I) / 15238))
    I = I - (Fix((30 - J) / 15)) * (Fix((17719 * J) / 50)) - (Fix(J / 16)) * (Fix((15238 * J) / 43)) + 29
    M = Fix((24 * I) / 709)
    D = I - Fix((709 * M) / 24)
    Y = 30 * N + J - 30
  

Dim str As String
str =totext(DateSerial(Y, M, D))
Dim nn As Number
nn=0

for  nn=0  to 9 Step 1
    str=Replace(str,totext(nn,0) , ChrW (nn+1632))
next
formula =str

 

post-2727-0-33612400-1364500682_thumb.gi

1
#13

السلام عليكم 

جزاك الله خير اخي KARIMSOFT

 

بجد موضوع يحتاج التثبيت وكل مبرمج محتاج يعرف كيفية عرض الارقام بالعربي فى التقارير

لك الحمدُ ،،، على - مَا مضى . .

وَ لكَ الحمدُ ،،، على مَا أنا ، به الآن . .
وَ لكَ الحمدُ ،،، على - مَا سيأتي . .
وَ لكَ الحمدُ ،،، على كُلِ حال . .
الحمد لله على نعمة الاسلام و كفى بها نعمة

#14

اكرمك الله

#15

أخي الفاضل كريم جزاك الله خير على الكود الأكثر من رائع

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

 

وبضم صوتي للأخ

Develooper  ويتم تثبيت الموضوع

تم تعديل هذه المشاركة بواسطة ابو رفيق في 5 أبريل 2013 في 21:28

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#16

اكرمك الله

#17

جعله الله في ميزان حسناتك

أخي   KARIMSOFT  والله لا يحرمنا من ابداعاتك

#18

اكرمك الله

#19

جزاك الله خيرا

 

ولكن يوجد مشكله لو الارقام عشريه  يعني مثلا رقم 4.40

يظهر 4 فقط

#20

اجعل القيمة في المعادله 2 هي عدد الكسر العشري بدل صفر

 totext(CurrentFieldValue,2)

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 15 أبريل 2013 في 00:02

#21
KARIMSOFT كتب:

اجعل القيمة في المعادله 2 هي عدد الكسر العشري بدل صفر

 totext(CurrentFieldValue,2)

تمت بنجاح .. شكرا

#22

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

Local StringVar str := ToText(CurrentFieldValue );
if IsNumeric(str) then str := ToText(ToNumber(str),0 ); // 0 عدد العلامات العشرية
if IsDate(str) then str := cstr(cdate(str),"yyyy/MM/dd");

Local numberVar  i:=0;
for  i:=0  to 9 do
    str:=Replace(str,totext(i,0) , ChrW (i+1632));
str

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#23

THANK YOU

#24
KARIMSOFT كتب:

 

جرب هذا التعديل ولكن غير syntax في المحرر الي الفيجول

Dim gDate As Date
gDate=CurrentDate

Dim jd As Number   
Dim I As Number
Dim N As Number
Dim J As Number
Dim K As Number
Dim H As Number

Dim D As Number
Dim M As Number
Dim Y As Number

D = Day(gDate)
M = Month(gDate)
Y = Year(gDate)


    If ((Y > 1582) Or ((Y = 1582) And (M > 10)) Or ((Y = 1582) And (M = 10) And (D > 14))) Then
      jd = Fix((1461 * (Y + 4800 + Fix((M - 14) / 12))) / 4) + Fix((367 * (M - 2 - 12 * (Fix((M - 14) / 12)))) / 12) - Fix((3 * (Fix((Y + 4900 + Fix((M - 14) / 12)) / 100))) / 4) + D - 32075
    Else
      jd = 367 * Y - Fix((7 * (Y + 5001 + Fix((M - 9) / 7))) / 4) + Fix((275 * M) / 9) + D + 1729777
    End If
    I = jd - 1948440 + 10632
    N = Fix((I - 1) / 10631)
    I = I - 10631 * N + 354
    J = (Fix((10985 - I) / 5316)) * (Fix((50 * I) / 17719)) + (Fix(I / 5670)) * (Fix((43 * I) / 15238))
    I = I - (Fix((30 - J) / 15)) * (Fix((17719 * J) / 50)) - (Fix(J / 16)) * (Fix((15238 * J) / 43)) + 29
    M = Fix((24 * I) / 709)
    D = I - Fix((709 * M) / 24)
    Y = 30 * N + J - 30
  

Dim str As String
str =totext(DateSerial(Y, M, D))
Dim nn As Number
nn=0

for  nn=0  to 9 Step 1
    str=Replace(str,totext(nn,0) , ChrW (nn+1632))
next
formula =str

السلام عليكم 

شكرا ليك اخ كريم تم بالفعل استخدام الكود مع التاريخ الهجري ونجح لكن يتم استخدامه مع التاريخ الحالي كيفية استخدمه مع تاريخ متغير 

Dim gDate As Date

gDate=CurrentDate

post-223626-0-74113700-1406036217_thumb.

تم تعديل هذه المشاركة بواسطة Develooper في 22 يوليو 2014 في 16:40

لك الحمدُ ،،، على - مَا مضى . .

وَ لكَ الحمدُ ،،، على مَا أنا ، به الآن . .
وَ لكَ الحمدُ ،،، على - مَا سيأتي . .
وَ لكَ الحمدُ ،،، على كُلِ حال . .
الحمد لله على نعمة الاسلام و كفى بها نعمة

#25

بدل هذا


Dim gDate As Date
gDate=CurrentDate

بهذا

Dim gDate As Date
gDate=CurrentFieldValue

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