hogoz بتاريخ: 27 مايو 2006 تقديم بلاغ مشاركة بتاريخ: 27 مايو 2006 السلام عليكم ورحمة الله وبركاتهأريد أن أعرف كيف يتم تحوي الأرقام إلى كتابة في التقارير مثاليوجد لدي الرقم 99 درجة أريده أن يتحول في حقل جواره إلى ( تسعة وتسعون درجة )هكذاوأشكر القائمين على المنتدى وخاصة الأستاذ أسامه على جهوده. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أسامة موسى بتاريخ: 27 مايو 2006 تقديم بلاغ مشاركة بتاريخ: 27 مايو 2006 اخي الكريم تحويل الارقام الى كتابة تعتمد على مبدأ تحليل الرقم نفسه واظن الاخوان طرحوا امثلة تفصيلية بهذا الموضوع ولكن هنا سوف نستعرض الشرح بطريقة تسهل فهمهافاستخدام الفورميلا هي الاساس فأنت تخرج اجمالي رقم وتقوم بارسال الرقم او قيمة الحقل الرقمي وبعد ذلك يستدعي فانكشن تحويل الارقام حيث يتم تجزئة الرقم لمعرفة اكبر خانة عشرات او مئات او الوف ينتمي اليها الرقم بعد ذلك يتم تحويل هذه الخانات وحسب خانة الرقملو فرضنا اننا ادخلنا الرقم 129 فسوف يتم استدعاء الفانكشن الخاصة بالتحويل ومعرفة هل يوجد بها خانات عشرية ام لا ويتم ذلك بضرب الرقم ب 100 ثم عمل TRUNC له وهي فانكشن تستخدم للقطعثم يقوم باستدعاء الفانكشن NUMBER_DESC وهي فانكشن نحن نقوم بعملها وهي تحتوي علىالمعادلات لتقسيم هذا الرقم حيث الرقم موجود بخنة المئات والعشرات والاحاد مرفق تقرير او مثال عمليواي استفسار ممكن استعراضه بنفس الموضوع طبعا اول ما تشغل التقرير يطلب يوزر نيم وباسوورد ادخل اي يوزر نيم عندكبعدها اعمل رن وادخل الرقم المراد تحويلهواستخدم خاصية البحث CON_REP.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
connector بتاريخ: 27 مايو 2006 تقديم بلاغ مشاركة بتاريخ: 27 مايو 2006 أخي العزيز اليك هذا الاجراء انا كتبته:-FUNCTION read_number(p_no number) RETURN char ISln number;v_desc varchar2(100);v_desc1 varchar2(100);v_desc2 varchar2(100);beginln:=length(to_char(p_no));if ln=1 thenselect decode(p_no,1,'واحد',2,'إثنان',3,'ثلاثة',4,'أربعة',5,'خمسة',6,'ستة',7,'سبعة',8,'ثمانية',9,'تسعة' ) into v_desc from dual;elsif ln=2 and p_no<20 thenselect decode(p_no,10,'عشرة',11,'أحد عشر',12,'إثنا عشر',13,'ثلاثة عشر',14,'أربعة عشر',15,'خمسة عشر',16,'ستة عشر',17,'سبعة عشر',18,'ثمانية عشر',19,'تسعة عشر' ) into v_desc from dual;elsif ln=2 thenselect decode(p_no,20,'عشرون',30,'ثلاثون',40,'أربعون',50,'خمسون',60,'ستون',70,'سبعون',80,'ثمانون',90,'تسعون',null ) into v_desc from dual; if v_desc is null then v_desc1:=read_number(to_number(substr(to_char(p_no),2,1))); v_desc2:=read_number(to_number(substr(to_char(p_no),1,1)||'0')); v_desc:=v_desc1||' و '||v_desc2; end if;elsif ln=3 thenselect decode(p_no,100,'مائة',200,'مائتان',300,'ثلاثمائة',400,'أربعمائة',500,'خمسمائة',600,'ستمائة',700,'سبعمائة',800,'ثمانمائة',900,'تسعمائة',null ) into v_desc from dual; if v_desc is null then v_desc1:=read_number(to_number(substr(to_char(p_no),2,2))); v_desc2:=read_number(to_number(substr(to_char(p_no),1,1)||'00')); v_desc:=v_desc2||' و '||v_desc1; end if;elsif ln=4 thenselect decode(p_no,1000,'ألف',2000,'ألفان',3000,'ثلاثة آلاف',4000,'أربعة آلاف',5000,'خمسة آلاف',6000,'ستة آلاف',7000,'سبعة آلاف',8000,'ثمانية آلاف',9000,'تسعة آلاف',null ) into v_desc from dual; if v_desc is null then v_desc1:=read_number(to_number(substr(to_char(p_no),2,3))); v_desc2:=read_number(to_number(substr(to_char(p_no),1,1)||'000')); v_desc:=v_desc2||' و '||v_desc1; end if;elsif ln=5 then v_desc1:=read_number(to_number(substr(to_char(p_no),1,2)))||' ألف '; v_desc2:=read_number(to_number(substr(to_char(p_no),3,3))); v_desc:=v_desc1||' و '||v_desc2;elsif ln=6 then v_desc1:=read_number(to_number(substr(to_char(p_no),1,3)))||' ألف '; v_desc2:=read_number(to_number(substr(to_char(p_no),4,3))); v_desc:=v_desc1||' و '||v_desc2;elsif ln=7 thenselect decode(p_no,1000000,'مليون',2000000,'مليونان',3000000,'ثلاثة ملايين',4000000,'أربعة ملايين',5000000,'خمسة ملايين',6000000,'ستة ملايين',7000000,'سبعة ملايين',8000000,'ثمانية ملايين',9000000,'تسعة ملايين',null ) into v_desc from dual; if v_desc is null then v_desc1:=read_number(to_number(substr(to_char(p_no),2,6))); v_desc2:=read_number(to_number(substr(to_char(p_no),1,1)||'000000')); v_desc:=v_desc2||' و '||v_desc1; end if;elsif ln=8 then v_desc1:=read_number(to_number(substr(to_char(p_no),1,2)))||' مليوناً '; v_desc2:=read_number(to_number(substr(to_char(p_no),3,6))); v_desc:=v_desc1||' و '||v_desc2;elsif ln=9 then v_desc1:=read_number(to_number(substr(to_char(p_no),1,3)))||' مليون '; v_desc2:=read_number(to_number(substr(to_char(p_no),4,6))); v_desc:=v_desc1||' و '||v_desc2;elsif ln=10 thenselect decode(p_no,1000000000,'مليار',2000000000,'ملياران',3000000000,'ثلاثة ملايارات',4000000000,'أربعة ملايارات',5000000000,'خمسة ملايارات',6000000000,'ستة ملايارات',7000000000,'سبعة ملايارات',8000000000,'ثمانية ملايارات',9000000000,'تسعة ملايارات',null ) into v_desc from dual;if v_desc is null then v_desc1:=read_number(to_number(substr(to_char(p_no),1,1)||'000000000')); v_desc2:=read_number(to_number(substr(to_char(p_no),2,9))); v_desc:=v_desc1||' و '||v_desc2;end if;elsif ln=11 then v_desc1:=read_number(to_number(substr(to_char(p_no),1,2)))||' مليار '; v_desc2:=read_number(to_number(substr(to_char(p_no),3,9))); v_desc:=v_desc1||' و '||v_desc2;elsif ln=12 then v_desc1:=read_number(to_number(substr(to_char(p_no),1,3)))||' مليار '; v_desc2:=read_number(to_number(substr(to_char(p_no),4,9))); v_desc:=v_desc1||' و '||v_desc2;end if;if substr(v_desc,length(v_desc)-3+1,3)= ' و 'then v_desc:=substr(v_desc,1,length(v_desc)-3);end if;return v_desc;exception when others thenreturn 'not define ';end;---------------------------وهذه الدالة نستدعيها من الدالة التالية:-Function CF_READ_AMOUNTFormula return Char is INT_NUMBER NUMBER(10):=TRUNC(:CHECK_AMOUNT); FRC_NUMBER NUMBER(5,2):=(:CHECK_AMOUNT - INT_NUMBER)*100;beginIF FRC_NUMBER IS NULL OR FRC_NUMBER=0 THEN RETURN 'فقط '||READ_NUMBER(INT_NUMBER)||' ريال'||' لا غير'; ELSE RETURN 'فقط '||READ_NUMBER(INT_NUMBER)||' ريال و '||FRC_NUMBER||' هللة'||' لا غير';END IF;end; 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
نصر فارس بتاريخ: 30 مايو 2006 تقديم بلاغ مشاركة بتاريخ: 30 مايو 2006 السلام عليكم هذه اول مشاركة لي و اشكر كل القائمين على المنتديو اشكر كل المشاركين و الذين ينفعون الناس بعلمهم و لا يبخلون عليهم به و كان لي رأي في موضوع تحويل الاعداد الى حروف منطوقة او مكتوبةو قد عملتها بعدة اشكال و لكن هناك طريقة سهلة و بسيطة و هي انشاء جدول نخزن به الرقم و مدلوله بالحروف ليس كل الارقام طبعا و لكنها تقريبا مثل ما فعل conector من 1 إلى 10 و من 11 إلى 20 و 30و 40 و50و .........90 ثم 100و200 و هكذا و لا داعي من استعمال 1000 لانني سوف استعمل نفس الطريقة مع كتابة رقم الف بجانب الارقام الموجودة في الافات و مليون و ستكون ان شاء الله بسيطة و سهلة اذا اردت ان تعرفوا الطريقة و الكود بالشرح المفصل فانا تحت امركم لعل الله يجعله في ميزان حسناتي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أسامة موسى بتاريخ: 1 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 1 يونيو 2006 اخي نصر,,,حياك الله بيننا وارجو ان تستفيد مما نقدمه وان تمدنا بمشاركاتك ليستفيد منها الجميع فارجو طرح فكرتك اذا كانت موجودة لديك ودائما استخدم خاصية البحث اذا اردت مواضيع معينه راجع هذا الرابطومرحبا بك بيننا مرة اخرى http://www.araboug.org/ib/index.php?showtopic=13959اخوكاسامة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
kingssongs بتاريخ: 17 أكتوبر 2006 تقديم بلاغ مشاركة بتاريخ: 17 أكتوبر 2006 ما شاء الله عليك اخي connectorالله يوفقك ويخليكتحياتي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
زوزه عسوله بتاريخ: 23 أكتوبر 2017 تقديم بلاغ مشاركة بتاريخ: 23 أكتوبر 2017 الفان وتسع عشر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.