بتاريخ: 8 يونيو 201015 سنة comment_194171 الاعضاء الكرام عندي فاتوره وحقل للمجموع اريد حقل ثاني الى جانب المجموع يكون فيه المجموع بس حرفيا وليس رقم مثال حقل المجموع =10000 اريد يكون في الحقل الثاني : عشره الاف ريال فقط لاغير جزاكم الله خير هذا الشي الي ناقص في مشروعي فقط تقديم بلاغ
بتاريخ: 8 يونيو 201015 سنة comment_194174 أخوووي هذا الشي ,,, صعب نسبيا اذا أردت اللغة العربية ولكن بالانجليزي متاح في أوراكل بشكل طبيعي ,,,..هذه الموضوع أسمه "التفقيط"أبحث و بالتووفيق لك تقديم بلاغ
بتاريخ: 8 يونيو 201015 سنة comment_194175 بسم الله الرحمن الرحيم قمت بعمل مثال لك إن شاء الله تستفيد منه DECLARE a0 varchar2(10):='واحد';A VARCHAR2(10):='إثنين';B VARCHAR2(10):='ثلاثه';C VARCHAR2(10):='إربعه';D VARCHAR2(10):='خمسه';BEGIN IF :ONE = 1 THEN:two:=(a0);ELSIF :ONE = 2 THEN :TWO:=(A);ELSIF :ONE = 3 THEN :TWO:=(;ELSIF :ONE = 4 THEN :TWO:=©;ELSIF :ONE = 5 THEN :TWO:=(D);end if;end; تم تعديل 8 يونيو 201015 سنة بواسطة eslam4444 تقديم بلاغ
بتاريخ: 8 يونيو 201015 سنة comment_194184 السلام عليكمراجع هذا الرابط:http://www.araboug.org/ib/index.php?showtopic=35979&st=0&p=165871&fromsearch=1entry165871موفق. تقديم بلاغ
بتاريخ: 9 يونيو 201015 سنة comment_194239 أخي الكيم جري الحل:package body Faqat is -- Private type declarations type Spelled_Table is TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER; type Qualifiers_Table is TABLE OF Qualifier INDEX BY BINARY_INTEGER; -- Private variable declarations Zero_Spelled VARCHAR2(100); From_1_To_19 Spelled_Table; From_20_To_90 Spelled_Table; From_100_To_900 Spelled_Table; All_Qualifiers Qualifiers_Table; Main_Qualifiers Qualifiers_Table; -- Function and procedure implementations PROCEDURE Set_Zero_Spelled (Spelled_Amount VARCHAR2) IS BEGIN Zero_Spelled := Spelled_Amount; END; FUNCTION Get_Token_Qualifier (Token IN VARCHAR2, Token_Qualifier Qualifier) RETURN varchar2 IS BEGIN -- Cases of 0, 1, and 2 are handled best by the spell function itself IF (TO_NUMBER(Token) > 2 AND TO_NUMBER(Token) < 11) THEN RETURN (Token_Qualifier.Plural ); ELSE RETURN (Token_Qualifier.Singular ); END IF; END; FUNCTION Spell_Token (Token IN VARCHAR2, Token_Qualifier Qualifier) RETURN varchar2 IS U NUMBER(1); -- Units T NUMBER(1); -- Tens H NUMBER(1); -- Hundreds Spelled VARCHAR2(100) DEFAULT NULL; BEGIN U := TO_NUMBER(SUBSTR(Token,3,1)); T := TO_NUMBER(SUBSTR(Token,2,1)); H := TO_NUMBER(SUBSTR(Token,1,1)); -- Added for qualifiers only IF (TO_NUMBER(Token) = 2) THEN RETURN (Token_Qualifier.Two ); END IF; -- Added for qualifiers only IF (TO_NUMBER(Token) = 1) THEN RETURN (Token_Qualifier.Singular); END IF; -- Added for qualifiers only IF (TO_NUMBER(Token) = 0) THEN -- No qualifiers for zeros RETURN NULL; END IF; IF (H <> 0) THEN Spelled := From_100_To_900(H); END IF; IF (U=0) AND (T=0) THEN -- Multiples of a hundred case 100,200,... RETURN (Spelled || ' ' || Get_Token_Qualifier(Token, Token_Qualifier)); END IF; IF (H <> 0) THEN Spelled := Spelled || ' æ'; END IF; IF (T = 1) THEN Spelled := Spelled || From_1_To_19(T*10+U); RETURN (Spelled || ' ' || Get_Token_Qualifier(Token, Token_Qualifier)); END IF; IF (U = 0) THEN Spelled := Spelled || From_20_To_90(T); RETURN (Spelled || ' ' || Get_Token_Qualifier(Token, Token_Qualifier)); END IF; Spelled := Spelled || From_1_To_19(U); IF (T=0) THEN RETURN (Spelled || ' ' || Get_Token_Qualifier(Token, Token_Qualifier)); END IF; Spelled := Spelled || ' æ' || From_20_To_90(T); RETURN (Spelled || ' ' || Get_Token_Qualifier(Token, Token_Qualifier) ); END; FUNCTION Get_Faqat (Input_Number IN NUMBER) RETURN varchar2 IS Int_Token VARCHAR2(30) DEFAULT NULL; -- Integer token Dec_Token_H VARCHAR2(30) DEFAULT NULL; -- Decimal token to hundred Dec_Token_T VARCHAR2(30) DEFAULT NULL; -- Decimal token Thousand Tokens_Count NUMBER; Int_Pad_Count NUMBER; Dec_Pad_Count NUMBER; Spelled_Token VARCHAR2(1024) DEFAULT NULL; Result VARCHAR2(1024) DEFAULT NULL; BEGIN IF (Input_Number=0) THEN RETURN Zero_Spelled; END IF; IF Input_Number > 999999999999.999 THEN RETURN ('***NUMBER TOO LARGE***'); END IF; IF Input_Number < 0 THEN RETURN ('***NEGATIVE NUMBER***'); END IF; IF Input_Number IS NULL THEN RETURN (NULL); END IF; Spelled_Token := TO_CHAR(Input_Number, '000000000000.000'); Result := NULL; Int_Token := SUBSTR (Spelled_Token, 2, 12); -- L.E. Dec_Token_H := '0' || SUBSTR (Spelled_Token, 15, 2); -- P.T. Dec_Token_T := '00' || SUBSTR (Spelled_Token, -1, 1); -- one-tenth P.T. Tokens_Count := LENGTH(Int_Token)/3; -- This is 4 of course for i in 1..(Tokens_Count-1) loop Spelled_Token := Spell_Token(SUBSTR(Int_Token, (i-1)*3+1, 3), All_Qualifiers(Tokens_Count-i)); IF (Result IS NOT NULL) THEN IF (Spelled_Token IS NOT NULL) THEN Result := Result || ' æ' || Spelled_Token; END IF; ELSE Result := Spelled_Token; END IF; end loop; -- L.E. Spelled_Token := Spell_Token(SUBSTR(Int_Token, (Tokens_Count-1)*3+1, 3), Main_Qualifiers(1)); IF (Result IS NOT NULL) THEN IF (Spelled_Token IS NULL) THEN Result := Result || ' ' || Main_Qualifiers(1).Singular; -- 1000, 1000000,--- ELSE Result := Result || ' æ' || Spelled_Token; END IF; ELSE Result := Spelled_Token; END IF; -- P.T. Spelled_Token := Spell_Token(SUBSTR(Dec_Token_H, 1, 3), Main_Qualifiers(2)); IF (Result IS NOT NULL) THEN IF (Spelled_Token IS NOT NULL) THEN Result := Result || ' æ' || Spelled_Token; END IF; ELSE Result := Spelled_Token; END IF; -- One-Tenth P.T. Spelled_Token := Spell_Token(SUBSTR(Dec_Token_T, 1, 3), Main_Qualifiers(3)); IF (Result IS NOT NULL) THEN IF (Spelled_Token IS NOT NULL) THEN Result := Result || ' æ' || Spelled_Token; END IF; ELSE Result := Spelled_Token; END IF; RETURN (Result || ' ÝÞØ áÇ ÛíÑ '); END; BEGIN -- Initialization Zero_Spelled := 'ÕÝÑ'; From_1_To_19(1) := 'æÇÍÏ'; From_1_To_19(2) := 'ÇËäÇä'; From_1_To_19(3) := 'ËáÇËÉ'; From_1_To_19(4) := 'ÇÑÈÚÉ'; From_1_To_19(5) := 'ÎãÓÉ'; From_1_To_19(6) := 'ÓÊÉ'; From_1_To_19(7) := 'ÓÈÚÉ'; From_1_To_19(8) := 'ËãÇäíÉ'; From_1_To_19(9) := 'ÊÓÚÉ'; From_1_To_19(10) := 'ÚÔÑÉ'; From_1_To_19(11) := 'ÃÍÏÚÔÑ'; From_1_To_19(12) := 'ÇËäÇÚÔÑ'; From_1_To_19(13) := 'ËáÇËÉÚÔÑ'; From_1_To_19(14) := 'ÃÑÈÚÉÚÔÑ'; From_1_To_19(15) := 'ÎãÓÉÚÔÑ'; From_1_To_19(16) := 'ÓÊÉÚÔÑ'; From_1_To_19(17) := 'ÓÈÚÉÚÔÑ'; From_1_To_19(18) := 'ËãÇäíÉÚÔÑ'; From_1_To_19(19) := 'ÊÓÚÉÚÔÑ'; From_20_To_90(1) := NULL; From_20_To_90(2) := 'ÚÔÑæä'; From_20_To_90(3) := 'ËáÇËæä'; From_20_To_90(4) := 'ÃÑÈÚæä'; From_20_To_90(5) := 'ÎãÓæä'; From_20_To_90(6) := 'ÓÊæä'; From_20_To_90(7) := 'ÓÈÚæä'; From_20_To_90(8) := 'ËãÇäæä'; From_20_To_90(9) := 'ÊÓÚæä'; From_100_To_900(1) := 'ãÇÆÉ'; From_100_To_900(2) := 'ãÇÆÊÇä'; From_100_To_900(3) := 'ËáÇËãÇÆÉ'; From_100_To_900(4) := 'ÃÑÈÚãÇÆÉ'; From_100_To_900(5) := 'ÎãÓãÇÆÉ'; From_100_To_900(6) := 'ÓÊãÇÆÉ'; From_100_To_900(7) := 'ÓÈÚãÇÆÉ'; From_100_To_900(8) := 'ËãÇäãÇÆÉ'; From_100_To_900(9) := 'ÊÓÚãÇÆÉ'; All_Qualifiers(1).Singular := 'ÃáÝ'; All_Qualifiers(1).Two := 'ÃáÝÇä'; All_Qualifiers(1).Plural := 'ÂáÇÝ'; All_Qualifiers(2).Singular := 'ãáíæä'; All_Qualifiers(2).Two := 'ãáíæäÇä'; All_Qualifiers(2).Plural := 'ãáÇííä'; All_Qualifiers(3).Singular := 'ãáíÇÑ'; All_Qualifiers(3).Two := 'ãáíÇÑÇä'; All_Qualifiers(3).Plural := 'ãáíÇÑÇÊ'; Main_Qualifiers(1).Singular := 'ÑíÇá'; Main_Qualifiers(1).Two := 'ÑíÇáÇä'; Main_Qualifiers(1).Plural := 'ÑíÇáÇÊ'; Main_Qualifiers(2).Singular := 'åááå'; Main_Qualifiers(2).Two := 'åááÊÇä'; Main_Qualifiers(2).Plural := 'åááÇÊ'; Main_Qualifiers(3).Singular := ' '; Main_Qualifiers(3).Two := ' '; Main_Qualifiers(3).Plural := ' ';PACKAGE FAQAT IS -- Author : Mohammad M. Fareed -- Modified : 04/02/2001 04:06:53 ? -- Modified by : Mohammad Fareed -- Purpose : To display the spelled amount in arabic of a number -- Private type declarations TYPE Qualifier IS RECORD ( Singular VARCHAR2(30), Two VARCHAR2(30), Plural VARCHAR2(30) ); -- Public function and procedure declarations FUNCTION Get_Faqat (Input_Number NUMBER) RETURN VARCHAR2; PROCEDURE Set_Zero_Spelled (Spelled_Amount VARCHAR2); PRAGMA RESTRICT_REFERENCES (Get_Faqat, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (Set_Zero_Spelled, WNDS);end Faqat;function CF_COUNTFormula return Number is X NUMBER :=0;begin X:=X+1; RETURN(X);end;function CF_tafqeetFormula return Char isbegin return(faqat.Get_Faqat(:SumNET_AMOUNTPerReport));end;و بلاخر استعمل اخر فنكشينEND Faqat; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.