kzaghloul بتاريخ: 4 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 4 يونيو 2005 كثيرا ما نحتاج إلى تحويل رقم إلى أحرف وخاصة في الفواتير مثلا:15.021 دينار نريدها (خمسة عشر دينارا وواحد وعشرون فلسا) ولقد أرفقت الفورم الذي يقوم بهذه العملية وأرجو ان يستفيد الجميع منه ConvertNo.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abumohamad بتاريخ: 4 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 4 يونيو 2005 بصراحة كود مفيد جداًوجزاك الله خيراً على إجتهادك , ونتمنى من جميع الأعضاء التعاون والمشاركة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mody901 بتاريخ: 4 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 4 يونيو 2005 اخي ، نفعك الله بما لديك من جهد وجعله في ميزان حسناتك. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_gadir بتاريخ: 5 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 5 يونيو 2005 اخي شكرا على هذا المجهود الرائعوالى الاماملكن كيف يمكن استخدام هذه الطريقة في االتقاريرلانه في العادة يستخدم التفقيط في التقارير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
K_fakhouri بتاريخ: 5 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 5 يونيو 2005 جعله في ميزان حسناتكوبارك الله فيك يا أخي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
amino1 بتاريخ: 6 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 6 يونيو 2005 السلام عليكم ورحمة الله وبركاته جزاك الله خير وجعله لميزان حسناتك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
WALEEDAAA بتاريخ: 26 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 26 نوفمبر 2005 شكراً وجزاك الله خير الجزاء بل أن هناك شيء مهم جداً وهو أن القراءة تتجاهل 100 مليون ولا تقوم بتحويله إلى حروف .169,540,322.9يقرأ فقط 9,540,322.9أرجو منكم التكرم بمعالجة الأكواد وجزاك الله خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
emad_jad بتاريخ: 23 أكتوبر 2007 تقديم بلاغ مشاركة بتاريخ: 23 أكتوبر 2007 هذه PACKAGE تساعد في موضوع التفقيط باللغة العربيةCREATE OR REPLACE PACKAGE PERSONNEL.NO_IN IS FUNCTION CONV_NO(N1 CHAR, KIND CHAR, N2 CHAR) RETURN CHAR; FUNCTION GET_DINAR(N2 CHAR) RETURN CHAR; FUNCTION GET_FILS(FR CHAR) RETURN CHAR; FUNCTION LETTERS(M2 NUMBER) RETURN CHAR;END;/وهذه تفاصيل الباكيج (البودي) وهي للأمانة من أخ عزيز له خبرة كبيرة معنا في العمل .. فلا تنسونا سويا من دعائكمCREATE OR REPLACE PACKAGE BODY PERSONNEL.NO_INIS FUNCTION CONV_NO (N1 CHAR, KIND CHAR, N2 CHAR) RETURN CHAR IS TYPE LETTERS IS VARRAY (100) OF VARCHAR2 (30); X LETTERS := LETTERS ('واحد ', 'اثنان ', 'ثلاثة ', 'اربعة ', 'خمسة ', 'ستة ', 'سبعة ', 'ثمانية ', 'تسعة ', 'عشرة ', 'أحد عشر ', 'إثنا عشر ', 'ثلاثة عشر ', 'أربعة عشر ', 'خمسة عشر ', 'ستة عشر ', 'سبعة عشر ', 'ثمانية عشر ', 'تسعة عشر ' ); T LETTERS := LETTERS ('عشرة ', 'عشرون ', 'ثلاثون ', 'أربعون ', 'خمسون ', 'ستون ', 'سبعون ', 'ثمانون ', 'تسعون ' ); H LETTERS := LETTERS ('مائة ', 'مائتان ', 'ثلاثمائة ', 'أربعمائة ', 'خمسمائة ', 'ستمائة ', 'سبعمائة ', 'ثمانمائة ', 'تسعمائة ' ); TH LETTERS := LETTERS ('ألف ', 'ألفان ', 'ثلاثة ألاف ', 'أربعة ألاف ', 'خمسة ألاف ', 'ستة ألاف ', 'سبعة ألاف ', 'ثمانية ألاف ', 'تسعة ألاف ', 'عشرة ألاف ', 'احد عشر ألفا ', 'اثنا عشر ألفا ', 'ثلاثة عشر ألفا ', 'أربعة عشر ألفا ', 'خمسة عشر ألفا ', 'ستة عشر ألفا ', 'سبعة عشر ألفا ', 'ثمانية عشر ألفا ', 'تسعة عشر ألفا ' ); M LETTERS := LETTERS ('مليون ', 'مليونان ', 'ثلاثة ملايين ', 'أربعة ملايين ', 'خمسة ملايين ', 'ستة ملايين ', 'سبعة ملايين ', 'ثمانية ملايين ', 'تسعة ملايين ', 'عشرة ملايين ', 'أحد عشر مليونا ', 'اثنا عشر مليوا ', 'ثلاثة عشر مليونا ', 'أربعة عشر مليونا ', 'خمسة عشر مليونا ', 'ستة عشر مليونا ', 'سبعة عشر مليونا ', 'ثمانية عشر مليونا ', 'تسعة عشر مليونا ' ); LETTER VARCHAR2 (500); R1 VARCHAR2 (30); R2 VARCHAR2 (30); R3 VARCHAR2 (30); L1 VARCHAR2 (200);BEGIN LETTER := ''; R1 := ' '; R2 := ' '; R3 := ' '; L1 := ''; IF N1 = 0 THEN L1 := ''; ELSIF N1 < 20 THEN IF KIND = 'H' THEN L1 := X(N1); ELSIF KIND = 'T' THEN IF SUBSTR(N2,7,3) > 0 THEN L1 := TH(N1) || 'و'; ELSE L1 := TH(N1); END IF; ELSIF KIND = 'M' THEN IF SUBSTR(N2,4,6) > 0 THEN L1 := M(N1) || 'و'; ELSE L1 := M(N1); END IF; END IF; ELSIF N1 < 1000 THEN IF SUBSTR(N1,2,2) >= 20 THEN IF SUBSTR(N1,3,1) > 0 THEN R1 := X(SUBSTR(N1,3,1)); L1 := R1 || 'و'; ELSE L1 := ''; R1 := ''; END IF; IF SUBSTR(N1,2,1) > 0 THEN R2 := T(SUBSTR(N1,2,1)); L1 := L1 || R2; IF SUBSTR(N1,1,1) > 0 THEN L1 := 'و' || L1; END IF; ELSE R2 := ''; END IF; ELSIF SUBSTR(N1,2,2) < 20 AND SUBSTR(N1,2,2) > 0 THEN R1 := X(SUBSTR(N1,2,2)); L1 := 'و' || R1; END IF; IF (SUBSTR(N1,1,1)) > 0 THEN R3 := H(SUBSTR(N1,1,1)); L1 := R3 || L1; ELSE R3 := ''; END IF; IF KIND = 'T' AND SUBSTR(N1,1,2) > 0 THEN IF SUBSTR(N2,7,3) > 0 THEN L1 := L1 || ' الفا و '; ELSE L1 := L1 || ' ألف '; END IF; ELSIF KIND = 'M' AND SUBSTR(N1,1,2) > 0 THEN IF SUBSTR(N2,4,6) > 0 THEN L1 := L1 || ' مليونا و '; ELSE L1 := L1 || ' مليون'; END IF; END IF; END IF; RETURN (L1);END; FUNCTION GET_DINAR (N2 CHAR) RETURN CHAR IS RET_VAL VARCHAR2 (10); BEGIN RET_VAL := 'دينارا'; IF SUBSTR(N2,8,2) = '00' THEN RET_VAL := 'دنانير '; ELSIF (SUBSTR(N2,9,1) BETWEEN 3 AND 9 AND SUBSTR(N2,8,1)='0') OR SUBSTR(N2,8,2) = '10' THEN RET_VAL := 'فلسا '; END IF; RETURN (RET_VAL); END; FUNCTION GET_FILS (FR CHAR) RETURN CHAR IS RET_VAL VARCHAR2(10); BEGIN RET_VAL := 'فلس'; IF SUBSTR(FR,2,2) = '00' THEN RET_VAL := 'فلس'; ELSIF (SUBSTR(FR,3,1) BETWEEN 3 AND 9 AND SUBSTR(FR,2,1)='0') OR SUBSTR(FR,2,2) = '10' THEN RET_VAL := 'فلوس'; END IF; RETURN (RET_VAL); END; FUNCTION LETTERS (M2 NUMBER) RETURN CHAR IS N2 VARCHAR2(15); FR VARCHAR2(4); N3 VARCHAR2 (3); N4 VARCHAR2 (3); N5 VARCHAR2 (3); ALL_LETTER VARCHAR2 (200); BEGIN N2 := M2; IF N2 > 999999999.999 OR N2 < 0 THEN RETURN ('*******************************************'); ELSE FR := 0; FR := N2 - FLOOR (N2); FR := FR * 1000; FR := LPAD(LTRIM(FR),3,'0'); N2 := FLOOR (N2); N2 := LPAD(LTRIM(N2),9,'0'); ALL_LETTER := ''; N3 := SUBSTR (N2, 7, 3); N4 := SUBSTR (N2, 4, 3); N5 := SUBSTR (N2, 1, 3); IF N2 > 0 THEN ALL_LETTER := CONV_NO (N5, 'M', N2) || CONV_NO (N4, 'T', N2) || CONV_NO (N3, 'H', N2) || ' ' || GET_DINAR (N2); END IF; IF FR > 0 AND N2 > 0 THEN ALL_LETTER := ALL_LETTER || ' و' || CONV_NO (FR, 'H', FR); ALL_LETTER := ALL_LETTER || ' ' || GET_FILS (FR); ELSIF FR > 0 AND N2 = 0 THEN ALL_LETTER := CONV_NO (FR, 'H', FR) || ' ' || GET_FILS (FR); END IF; RETURN (ALL_LETTER); END IF; END;END;/ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
s_devlop بتاريخ: 17 نوفمبر 2007 تقديم بلاغ مشاركة بتاريخ: 17 نوفمبر 2007 الف شكر وربنا يجازيك كل خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ANAS-ORA بتاريخ: 25 ديسمبر 2007 تقديم بلاغ مشاركة بتاريخ: 25 ديسمبر 2007 اخ kzaghloul .. شكرا .. على مجهودك ...الكود كان فيه خطء بسيط .. وهوه عند فرائة 1000000 يقراها مليون الف .. و هاذا هوه الكود بعد التعديل FUNCTION FU_TAFKEET (N NUMBER) RETURN VARCHAR2 IS type tafkeet_table is table of varchar2(15) index by binary_integer; one tafkeet_table; hund tafkeet_table; n_ch varchar2(8); n1 number(2); n2 number(2); n3 number(2); n4 number(2); n5 number(2); n6 number(3,3); ch varchar2(200); ch1 varchar2(20); ch2 varchar2(20); ch3 varchar2(20); ch4 varchar2(20); ch5 varchar2(20); ch6 varchar2(5); ch1_1 varchar2(14); ch3_3 varchar2(14); ch5_5 varchar2(19); and1 varchar2(2); and2 varchar2(2); and3 varchar2(2); and4 varchar2(2); and5 varchar2(2); fils varchar2(4):= 'ÏÑåã'; only varchar2(3):= 'ÝÞØ'; dinar varchar2(7):= 'ÑíÇá'; thousand varchar2(5);--:= 'ÃáÝ'; milion varchar2(7); begin -- TABLE one(0) := ' '; one(1) := 'æÇÍÏ '; one(2) := 'ÅËäÇä '; one(3) := 'ËáÇËÉ '; one(4) := 'ÃÑÈÚÉ '; one(5) := 'ÎãÓÉ '; one(6) := 'ÓÊÉ '; one(7) := 'ÓÈÚÉ '; one(8) := 'ËãÇäíÉ '; one(9) := 'ÊÓÚÉ '; one(10) := 'ÚÔÑÉ '; one(11) := 'ÃÍÏ ÚÔÑ'; one(12) := 'ÅËäì ÚÔÑ'; one(13) := 'ËáÇËÉ ÚÔÑ'; one(14) := 'ÃÑÈÚÉ ÚÔÑ'; one(15) := 'ÎãÓÉ ÚÔÑ'; one(16) := 'ÓÊÉ ÚÔÑ'; one(17) := 'ÓÈÚÉ ÚÔÑ'; one(18) := 'ËãÇäíÉ ÚÔÑ'; one(19) := 'ÊÓÚÉ ÚÔÑ'; one(20) := 'ÚÔÑæä'; one(21) := 'æÇÍÏ æÚÔÑæä'; one(22) := 'ÅËäÇä æÚÔÑæä'; one(23) := 'ËáÇËÉ æÚÔÑæä'; one(24) := 'ÃÑÈÚÉ æÚÔÑæä'; one(25) := 'ÎãÓÉ æÚÔÑæä'; one(26) := 'ÓÊÉ æÚÔÑæä'; one(27) := 'ÓÈÚÉ æÚÔÑæä'; one(28) := 'ËãÇäíÉ æÚÔÑæä'; one(29) := 'ÊÓÚÉ æÚÔÑæä'; one(30) := 'ËáÇËæä'; one(31) := 'æÇÍÏ æËáÇËæä'; one(32) := 'ÅËäÇä æËáÇËæä'; one(33) := 'ËáÇËÉ æËáÇËæä'; one(34) := 'ÃÑÈÚÉ æËáÇËæä'; one(35) := 'ÎãÓÉ æËáÇËæä'; one(36) := 'ÓÊÉ æËáÇËæä'; one(37) := 'ÓÈÚÉ æËáÇËæä'; one(38) := 'ËãÇäíÉ æËáÇËæä'; one(39) := 'ÊÓÚÉ æËáÇËæä'; one(40) := 'ÃÑÈÚæä'; one(41) := 'æÇÍÏ æÃÑÈÚæä'; one(42) := 'ÅËäÇä æÃÑÈÚæä'; one(43) := 'ËáÇËÉ æÃÑÈÚæä'; one(44) := 'ÃÑÈÚÉ æÃÑÈÚæä'; one(45) := 'ÎãÓÉ æÃÑÈÚæä'; one(46) := 'ÓÊÉ æÃÑÈÚæä'; one(47) := 'ÓÈÚÉ æÃÑÈÚæä'; one(48) := 'ËãÇäíÉ æÃÑÈÚæä'; one(49) := 'ÊÓÚÉ æÃÑÈÚæä'; one(50) := 'ÎãÓæä'; one(51) := 'æÇÍÏ æÎãÓæä'; one(52) := 'ÅËäÇä æÎãÓæä'; one(53) := 'ËáÇËÉ æÎãÓæä'; one(54) := 'ÃÑÈÚÉ æÎãÓæä'; one(55) := 'ÎãÓÉ æÎãÓæä'; one(56) := 'ÓÊÉ æÎãÓæä'; one(57) := 'ÓÈÚÉ æÎãÓæä'; one(58) := 'ËãÇäíÉ æÎãÓæä'; one(59) := 'ÊÓÚÉ æÎãÓæä'; one(60) := 'ÓÊæä'; one(61) := 'æÇÍÏ æÓÊæä'; one(62) := 'ÅËäÇä æÓÊæä'; one(63) := 'ËáÇËÉ æÓÊæä'; one(64) := 'ÃÑÈÚÉ æÓÊæä'; one(65) := 'ÎãÓÉ æÓÊæä'; one(66) := 'ÓÊÉ æÓÊæä'; one(67) := 'ÓÈÚÉ æÓÊæä'; one(68) := 'ËãÇäíÉ æÓÊæä'; one(69) := 'ÊÓÚÉ æÓÊæä'; one(70) := 'ÓÈÚæä'; one(71) := 'æÇÍÏ æÓÈÚæä'; one(72) := 'ÅËäÇä æÓÈÚæä'; one(73) := 'ËáÇËÉ æÓÈÚæä'; one(74) := 'ÃÑÈÚÉ æÓÈÚæä'; one(75) := 'ÎãÓÉ æÓÈÚæä'; one(76) := 'ÓÊÉ æÓÈÚæä'; one(77) := 'ÓÈÚÉ æÓÈÚæä'; one(78) := 'ËãÇäíÉ æÓÈÚæä'; one(79) := 'ÊÓÚÉ æÓÈÚæä'; one(80) := 'ËãÇäæä'; one(81) := 'æÇÍÏ æËãÇäæä'; one(82) := 'ÅËäÇä æËãÇäæä'; one(83) := 'ËáÇËÉ æËãÇäæä'; one(84) := 'ÃÑÈÚÉ æËãÇäæä'; one(85) := 'ÎãÓÉ æËãÇäæä'; one(86) := 'ÓÊÉ æËãÇäæä'; one(87) := 'ÓÈÚÉ æËãÇäæä'; one(88) := 'ËãÇäíÉ æËãÇäæä'; one(89) := 'ÊÓÚÉ æËãÇäæä'; one(90) := 'ÊÓÚæä'; one(91) := 'æÇÍÏ æÊÓÚæä'; one(92) := 'ÅËäÇä æÊÓÚæä'; one(93) := 'ËáÇËÉ æÊÓÚæä'; one(94) := 'ÃÑÈÚÉ æÊÓÚæä'; one(95) := 'ÎãÓÉ æÊÓÚæä'; one(96) := 'ÓÊÉ æÊÓÚæä'; one(97) := 'ÓÈÚÉ æÊÓÚæä'; one(98) := 'ËãÇäíÉ æÊÓÚæä'; one(99) := 'ÊÓÚÉ æÊÓÚæä'; hund(0) := ' '; hund(1) := 'ãÇÆÉ'; hund(2) := 'ãÇÆÊÇä'; hund(3) := 'ËáÇËãÇÆÉ'; hund(4) := 'ÃÑÈÚãÇÆÉ'; hund(5) := 'ÎãÓãÇÆÉ'; hund(6) := 'ÓÊãÇÆÉ'; hund(7) := 'ÓÈÚãÇÆÉ'; hund(8) := 'ËãÇäãÇÆÉ'; hund(9) := 'ÊÓÚãÇÆÉ'; ----------- n_ch := lpad(to_char(trunc(n)),8,'00000000'); n1 := nvl(to_number(substr(n_ch,1,2)),0); n2 := nvl(to_number(substr(n_ch,3,1)),0); n3 := nvl(to_number(substr(n_ch,4,2)),0); n4 := nvl(to_number(substr(n_ch,6,1)),0); n5 := nvl(to_number(substr(n_ch,7,2)),0); n6 := nvl(mod(n,1),0); ch1 := one(n1); ch2 := hund(n2); ch3 := one(n3); ch4 := hund(n4); ch5 := one(n5); ch6 := lpad(rpad(to_char(n6*1000),4,' '),5,' '); if (n1<>0) and (n2<>0 or n3<>0 or n4<>0 or n5<>0) then and1 := ' æ '; end if; if (n2<>0) and (n3<>0 or n4<>0 or n5<>0) then and2 := ' æ '; end if; if (n3<>0 or n2<>0) and (n4<>0 or n5<>0) then and3 := ' æ '; end if; if (n4<>0) and (n5<>0) then and4 := ' æ '; end if; if (trunc(n)<>0) and (n6<>0) then and5 := ' æ '; end if; ch1_1 := ch1; ch3_3 := ch3; ch5_5 := ch5; if nvl(n,0)=0 then only := ' '; dinar := ' '; thousand := ' '; end if; if (n6=0) then fils := ''; ch6 := ''; end if; if (n3=1) and (n2=0) then ch3_3 := ''; thousand := 'ÃáÝ'; elsif (n3=2) and (n2=0) then thousand := 'ÃáÝíä'; ch3_3 := ''; elsif (n3>=3) and (n3<=10) then thousand := 'ÃáÇÝ'; end if; if (n3=0) and (n2=0) and (n4<>0 or n5<>0) then thousand := ''; end if; if (n3=0) then and2 := ''; end if; if (n1=0 and n2 =0 and n3=0 and n4=0) then if (n5=1) then ch5_5 := 'ÑíÇá '||ch5; thousand := ''; dinar := ''; elsif (n5=2) then ch5_5 := 'ÑíÇáíä '; thousand := ''; dinar := ''; elsif (n5>=3) and (n5<=10) then ch5_5 := ch5 || 'ÑíÇáÇÊ '; thousand := ''; dinar := ''; end if; end if; if (n1=0 and n2 =0 and n3=0 and n4=0 and n5=0) then thousand := ''; dinar := ''; end if; if (n1=1) then milion := 'ãáíæä '; ch1_1 := ''; -- thousand := ''; elsif (n1=2) then milion := 'ãáíæäíä '; ch1_1 := ''; elsif (n1>=3) and (n1<=10) then milion := 'ãáÇííä '; elsif (n1<>0) then milion := 'ãáíæä '; end if; ch := ch1_1||' '||milion||and1||ch2||and2||ch3_3||' '||thousand||and3||ch4||and4||ch5_5||' '||dinar||and5||ch6||fils||' '||only; return(ch); END; و هناك مشكلة اخرى انه لأ يقرا بطريفة صحيحة بعد الـ 99 مليون .. وشكرا ... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
رقماني بتاريخ: 29 ديسمبر 2007 تقديم بلاغ مشاركة بتاريخ: 29 ديسمبر 2007 هل يمكن لهذه الخوارزمية أن تعالج الأعداد الحقيقية، بوجود أرقام عشرية؟بالأخص عندما نحتاج إلى تفقيط قيمة مالية لتتم كتابتها على شيك على سبيل المثال. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ramy_orcl بتاريخ: 29 يناير 2008 تقديم بلاغ مشاركة بتاريخ: 29 يناير 2008 شكرا جدا جدا الى الامام دائما اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.