بتاريخ: 18 أبريل 201510 سنة comment_261837 الاخوة الكرام السلام عليكم ورحمة الله وبركاته لدي التقرير يعرض تاريخ سداد الاقساط للعميل بالهجري من واقع قاعدة البيانات اود ان انشئ حقل بنفس التقريريعرض التاريخ الموافق لتاريخ سداد القسط (الهجري) ولكن بالميلادي ارجو المساعدة في كتابة الكود مع خالص شكري وتقديري مرفق صورة للتقرير تقديم بلاغ
بتاريخ: 18 أبريل 201510 سنة comment_261847 انا مش عارف انتو مدخلين الهجري بالكود ولا ده الافتراضى بتاعكم اصلا , بس عموما اعمل حقل جديد واعمل فورميولا واكتب :YOUR_NEW_FIELD := to_char(:YOUR_HIJRA_DATE_FIELD,'DD-MM-RRRR','NLS_CALENDAR=''GREGORIAN''') تقديم بلاغ
بتاريخ: 18 أبريل 201510 سنة كاتب الموضوع comment_261851 انا مش عارف انتو مدخلين الهجري بالكود ولا ده الافتراضى بتاعكم اصلا , بس عموما اعمل حقل جديد واعمل فورميولا واكتب :YOUR_NEW_FIELD := to_char(:YOUR_HIJRA_DATE_FIELD,'DD-MM-RRRR','NLS_CALENDAR=''GREGORIAN''') التاريخ الهجري لدينا بالكود ويحفظ بقاعدة البيانات بعد تحويله من ميلادي هجري ويستخدم هذا البروسيدور عند استدعاء اي فورم ويتم من خلاله تحويل التاريخ من ميلادي الى هجري بالفورم ونتعامل معه من خلال الفورم بعد التحويل ويحفظ بقاعدة البيانات ويوجدهذا البروسيدوربكل تقرير PROCEDURE CALENDAR_FUNCTION(P_DATE_IN IN DATE,TYPE_CAL IN CHAR, RET_DATE IN OUT DATE) IS P_HIYY_CAL1 NUMBER; P_HIYY_CAL2 NUMBER; P_HIMM_CAL1 NUMBER; P_HIMM_CAL2 NUMBER; P_DATE_EN DATE; P_DATE_EN2 DATE; P_DATE_HI DATE; P_DATE_HI2 DATE; RET_EN_DATE DATE; RET_HI_DATE DATE; BEGIN IF TYPE_CAL = 'H' THEN --SELECT TO_DATE(CODE_NAME,'DD-MM-YYYY'),TO_DATE(CODE_SHORT,'DD-MM-YYYY') select GREG_DATE, HIJRI_DATE into P_DATE_EN,P_DATE_HI from main.GREG_HIJ_BASE where greg_date = ( select MAX(greg_date) from MAIN.GREG_HIJ_BASE where greg_date <= P_DATE_IN); P_HIYY_CAL1:=TRUNC((P_DATE_IN-P_DATE_EN)/355); P_HIYY_CAL2:=MOD ((P_DATE_IN-P_DATE_EN),355); P_HIMM_CAL1:=TRUNC(P_HIYY_CAL2/29.5); P_HIMM_CAL2:=MOD (P_HIYY_CAL2,29.5); RET_DATE :=ADD_MONTHS(P_DATE_HI,(12*P_HIYY_CAL1)+P_HIMM_CAL1); RET_DATE :=RET_DATE+P_HIMM_CAL2; ELSE select GREG_DATE, HIJRI_DATE into P_DATE_EN,P_DATE_HI from main.GREG_HIJ_BASE where greg_date = ( select MAX(greg_date) from MAIN.GREG_HIJ_BASE where hijri_date <= P_DATE_IN); RET_EN_DATE:=P_DATE_EN2+(P_DATE_IN-P_DATE_HI2); CALENDAR_FUNCTION(RET_EN_DATE,'H',RET_HI_DATE); RET_DATE:= RET_EN_DATE-TRUNC(RET_HI_DATE-P_DATE_HI2); END IF; END CALENDAR_FUNCTION; تقديم بلاغ
بتاريخ: 18 أبريل 201510 سنة كاتب الموضوع comment_261857 ع البركة , المهم , مشي الحال ولا ؟ كتبت المعادلة كالتالي function meladFormula return Date is d2 date ; begin d2 := to_char(:tsd_date,'DD-MM-RRRR','NLS_CALENDAR=''GREGORIAN''') ; return (d2); end; وعند تشغيل التقرير تظهر لي الرسالة المرفقة تفيد ان هناك تنسيق خطا في المعادلة علما بان تنسيق التاريخ الهجري ياتي من ال QUERY كالتالي TDEED_GST.TSD_GST_DATE_YY||'/'||LPAD(TDEED_GST.TSD_GST_DATE_MM,2,'0')||'/'||LPAD(TDEED_GST.TSD_GST_DATE_DD,2,'0') TSD_DATE, مع الشكر والتقدير تقديم بلاغ
بتاريخ: 18 أبريل 201510 سنة comment_261862 طبيعي يا بشمهندس الفورميولا بترجع DATE , وانت بترجع CHARACHTER في المتغير D2 تقديم بلاغ
بتاريخ: 19 أبريل 201510 سنة كاتب الموضوع comment_261867 طبيعي يا بشمهندس الفورميولا بترجع DATE , وانت بترجع CHARACHTER في المتغير D2 أعلم ذلك ولذلك وضحت لك ان تنسيق التاريخ الهجري ياتي CHARACHTER وقد كتبت المعادلة بصورة اخري كالتالي function MELADYFormula return Date is d2 date ; d1 date ; begin d1 := :tsd_date ; d2 := to_char(d1,'DD-MM-RRRR','NLS_CALENDAR=''GREGORIAN''') ; return (d2); end; وعند التشغيل ظهرت لي الرسالة المرفقة فهل لديك حل وما هي الصيغة الصحيحة لكتابة الدالة في هذه الحالة مع الشكر ؟؟ تقديم بلاغ
بتاريخ: 19 أبريل 201510 سنة comment_261869 انت مغيرتش حاجة يا بمشهندس , الـ d2 لسة date زي ما هو , غيره لـ varchar2(size) وشيل الـ d1 ده خالص مش عايزينه . وحط مكانه في الفانكشن اسم الفيلد عادي . تقديم بلاغ
بتاريخ: 19 أبريل 201510 سنة كاتب الموضوع comment_261873 انت مغيرتش حاجة يا بمشهندس , الـ d2 لسة date زي ما هو , غيره لـ varchar2(size) وشيل الـ d1 ده خالص مش عايزينه . وحط مكانه في الفانكشن اسم الفيلد عادي . اخي اسلام تم كتابة الدالة كالتالي function MELADYFormula return Char is MELADY varchar2 (20) ; begin MELADY := to_char(:tsd_date,'DD-MM-RRRR','NLS_CALENDAR=''GREGORIAN''') ; end; وعند التشغيل نفس الرسالة المرفقة ولست ادري اين المشكلة ؟ تقديم بلاغ
بتاريخ: 19 أبريل 201510 سنة comment_261875 الفيلد الي بترجع فيه النتيجة نوعه ايه يا بشمهندس ؟ تقديم بلاغ
بتاريخ: 19 أبريل 201510 سنة كاتب الموضوع comment_261879 الفيلد الي بترجع فيه النتيجة نوعه ايه يا بشمهندس ؟ نوعه CHARACHTER وموضح كما في الصورة المرفقة تقديم بلاغ
بتاريخ: 19 أبريل 201510 سنة comment_261880 بص يا بشمهندس , احنا كده ربنا يدينا طولة العمر , علي ما نعرف نساعد . حاول تساعد معايا شوية لو سمحت , الي في الصورة ده اي فيلد بالظبط , عشان ده السورس بتاعه MELADY الي هو والله اعلم عمود ؟ لو كده فغلط طبعا , عشان السورس المفروض يكون الفورميولا . 2- جرب الـ TO_CHAR في السيكول بلس وشوفه شغال ولا لا . - حاول تستكشف الزتونة معايا يعني , يا اما ارفع التقرير لو انت شغال 6I عشان ده الي عندي ,وارفع الجداول , وممكن انا واي حد نساعدك باذن الله . تم تعديل 19 أبريل 201510 سنة بواسطة eslam elbyaly تقديم بلاغ
بتاريخ: 20 أبريل 201510 سنة كاتب الموضوع comment_261888 بص يا بشمهندس , احنا كده ربنا يدينا طولة العمر , علي ما نعرف نساعد . حاول تساعد معايا شوية لو سمحت , الي في الصورة ده اي فيلد بالظبط , عشان ده السورس بتاعه MELADY الي هو والله اعلم عمود ؟ لو كده فغلط طبعا , عشان السورس المفروض يكون الفورميولا . 2- جرب الـ TO_CHAR في السيكول بلس وشوفه شغال ولا لا . - حاول تستكشف الزتونة معايا يعني , يا اما ارفع التقرير لو انت شغال 6I عشان ده الي عندي ,وارفع الجداول , وممكن انا واي حد نساعدك باذن الله . مرفق التقرير اما الجداول لا اعرف كيفية رفعها هل تريد اخذ كوبي لبناء الجدول من الاسكربت ام ماذا مع شكري وتقديري واسف لتعبك GST10092_b.rar تقديم بلاغ
بتاريخ: 20 أبريل 201510 سنة comment_261905 الجداول ممكن تعملها اكسبورت (DDL) وللـ INSERT STATEMENTS عشان اعرف اجرب , بس مش مشكلة خلاص , خليها مؤقتا . - المهم , بدل ما تكتب الفورميولا كده , begin d2 := to_char(:tsd_date,'DD-MM-RRRR','NLS_CALENDAR=''GREGORIAN''') ; return (d2);اكتبها كده select to_char(:tsd_date..................) into variable from .......... return variable ; مع اني برده مش فاهم الدنيا , انا شايفك في البروسيدجر الي فوق بتجيب بيها اصلا التاريخ الهجرى والميلادي من الداتابيز , يعني انت عندك الاتنين , وهي مش بتحول ولا حاجة , بس ما علينا يعني . جرب كده وقولي , وخد بالك من نوع البيانات للحقول والفورميولا والكلام ده كله . هي شغالة عندي , جربتها ع الـ hiredate وشغالة . تقديم بلاغ
بتاريخ: 21 أبريل 201510 سنة كاتب الموضوع comment_261923 لم اجد التنسيق DDL عند تصدير الجدول حيث انني استخدم TOAD وقد كتبت المعادلة كالتالي كما طلبت function MELADYFormula return Char is variable varchar2 (20) ; begin select to_char( TDEED_GST.TSD_GST_DATE_YY||'/'||LPAD(TDEED_GST.TSD_GST_DATE_MM,2,'0')||'/'||LPAD(TDEED_GST.TSD_GST_DATE_DD,2,'0') ,'DD-MM-RRRR','NLS_CALENDAR=''GREGORIAN''') into variable from GEST.TDEED_GST where TSD_CRE_NO = :TSD_CRE_NO and TSD_DOC_NO =:TSD_DOC_NO ; return variable ; end; وقد ظهرت الرسالة المرفقة عند التشغيل اما الجدول فهذا هو بناؤه من الاسكربت CREATE TABLE TDEED_GST ( TSD_CRE_NO VARCHAR2(8), TSD_GST_NO NUMBER(4), TSD_GST_DATE_DD NUMBER(2), TSD_GST_DATE_MM NUMBER(2), TSD_GST_DATE_YY NUMBER(4), TSD_DOC_NO VARCHAR2(10), TSD_GST_MONY NUMBER(6), TSD_BY_MONY NUMBER(1), TSD_FLAG NUMBER(1), BANK_NO NUMBER(5), TSD_NOTES VARCHAR2(100) ) LOGGING NOCACHE NOPARALLEL; ALTER TABLE TDEED_GST ADD ( CONSTRAINT TSD_DATE_DOC_PK PRIMARY KEY (TSD_CRE_NO, TSD_DOC_NO, TSD_GST_DATE_DD, TSD_GST_DATE_MM, TSD_GST_DATE_YY, TSD_GST_NO)); تم تعديل 21 أبريل 201510 سنة بواسطة mohd_yakout تقديم بلاغ
بتاريخ: 21 أبريل 201510 سنة comment_261924 يعني يا بشمهندس احنا بنجرب دلوقتي , نقوم ندخل LPAD و || والكلام ده , مش نجرب ع الاساس الاول . والـ Toad اكيد طبعا بيطلع DML و DDL . معلش يا هندسة بس ظني انك مش بتحاول تحل المشكلة . سؤال لو سمحت , لما في فانكشن بتحول التاريخ الميلادي لهجرى , ده معناه ان التاريخ الميلادي عندك اصلا , صح ؟ وبعدين انا شايفك بتـ SELECT العمودين الهجرى والميلادي في البروسيدجر الي فوق ؟ تقديم بلاغ
بتاريخ: 21 أبريل 201510 سنة كاتب الموضوع comment_261927 استاذي الفاضل اولا ان لم اكن اود حل للمشكلة ما لجات لمساعدتكم بالمنتدي ثانيا التاريخ الميلادي الوحيد لدي هو تاريخ اليوم ويؤخذ من الـ system ويتم تحويلة الى تاريخ هجري على اعتبار انه تاريخ التسديد (لليوم) ويحفظ في قاعدة البيانات كل حقل على حدة اليوم ثم الشهر ثم السنة وعند استدعاؤه من قاعده البيانات يستدعي بالشكل الاتي TDEED_GST.TSD_GST_DATE_YY||'/'||TDEED_GST.TSD_GST_DATE_MM||'/'||TDEED_GST.TSD_GST_DATE_DD, ولايوجد لدينا بقاعدة البيانات حفظ للتاريخ الميلادي بمعنى اننا ناخذ تاريخ اليوم الميلادي ونحولة الى هجري ونحفظه هجري في ثلاث اعمده يوم شهر سنة ومن ثم نتعامل معه بالتقارير ولا يوجد لدينا بقاعدة البيانات ان التاريح الهجري مثلا 1436/7/2 يوافق 2015/4/15 اخي الكريم ارجو منك ان تدرك انني لست مبرمج ولم ادرس البرمجة وتوجد بعض المصطلحات تذكرها انت لم اتعامل معها من قبل ولكن احاول ان البي متطلبات العمل بقدر امكانياتي المتواضعة جدا وان تعثرت الجأ الي الكرام امثالكم لذلك ارجو ان يكون صدرك رحب ان لم استوعب شيى ما . وشكرا تم تعديل 21 أبريل 201510 سنة بواسطة mohd_yakout تقديم بلاغ
بتاريخ: 21 أبريل 201510 سنة comment_261938 يا أخي انا مقصدش والله , انا مقلتش انك مش عاوز تحل المشكلة , انا قلت انك مش بتساعد لحل المشكلة وده كان علي اساس اني كنت فاكرك مبرمج , كان المفروض تعرفني الوضع ايه من الاول , بدل ما اقول كلام ومتفهموش والي أثر طبعا علي حل المشكلة . المهم حصل خير - في حاجة بقى لازم افهمها عشان نعرف ينفع نساعد اصلا ولا لا , بما انك مش مبرمج , فممكن تبقى شارى البرنامج من حد او من شركة او ايا كان , المهم انه مش ملكك ؟ , وفي حقوق ملكية طبعا , ومادام في حقوق ملكية يبقى محدش ليه حق يعدل في البرنامج . تقديم بلاغ
بتاريخ: 22 أبريل 201510 سنة كاتب الموضوع comment_261949 يا أخي انا مقصدش والله , انا مقلتش انك مش عاوز تحل المشكلة , انا قلت انك مش بتساعد لحل المشكلة وده كان علي اساس اني كنت فاكرك مبرمج , كان المفروض تعرفني الوضع ايه من الاول , بدل ما اقول كلام ومتفهموش والي أثر طبعا علي حل المشكلة . المهم حصل خير - في حاجة بقى لازم افهمها عشان نعرف ينفع نساعد اصلا ولا لا , بما انك مش مبرمج , فممكن تبقى شارى البرنامج من حد او من شركة او ايا كان , المهم انه مش ملكك ؟ , وفي حقوق ملكية طبعا , ومادام في حقوق ملكية يبقى محدش ليه حق يعدل في البرنامج . لا يا اخي البرنامج ملك لنا ولدينا السورس وكلمات المرور ولنا الحق في تعديلة والاضافة اليه والحذف منه تقديم بلاغ
بتاريخ: 22 أبريل 201510 سنة comment_261959 يا أخي انا مقصدش والله , انا مقلتش انك مش عاوز تحل المشكلة , انا قلت انك مش بتساعد لحل المشكلة وده كان علي اساس اني كنت فاكرك مبرمج , كان المفروض تعرفني الوضع ايه من الاول , بدل ما اقول كلام ومتفهموش والي أثر طبعا علي حل المشكلة . المهم حصل خير - في حاجة بقى لازم افهمها عشان نعرف ينفع نساعد اصلا ولا لا , بما انك مش مبرمج , فممكن تبقى شارى البرنامج من حد او من شركة او ايا كان , المهم انه مش ملكك ؟ , وفي حقوق ملكية طبعا , ومادام في حقوق ملكية يبقى محدش ليه حق يعدل في البرنامج . لا يا اخي البرنامج ملك لنا ولدينا السورس وكلمات المرور ولنا الحق في تعديلة والاضافة اليه والحذف منه يا ريت تشرحلي الموضوع ده ع الخاص لاني مش فاهم بالظبط , بس مبدأيا , ادخل ع الداتابيز واكتب SELECT GREG_DATE , HIJRI_DATE FROM MAIN.GREG_HIJ_BASE ; وقولي طلعلك ايه . لو في مشكلة في الدخول ع الداتابيز يا ريت تعرفني . تقديم بلاغ
بتاريخ: 22 أبريل 201510 سنة كاتب الموضوع comment_261961 يا أخي انا مقصدش والله , انا مقلتش انك مش عاوز تحل المشكلة , انا قلت انك مش بتساعد لحل المشكلة وده كان علي اساس اني كنت فاكرك مبرمج , كان المفروض تعرفني الوضع ايه من الاول , بدل ما اقول كلام ومتفهموش والي أثر طبعا علي حل المشكلة . المهم حصل خير - في حاجة بقى لازم افهمها عشان نعرف ينفع نساعد اصلا ولا لا , بما انك مش مبرمج , فممكن تبقى شارى البرنامج من حد او من شركة او ايا كان , المهم انه مش ملكك ؟ , وفي حقوق ملكية طبعا , ومادام في حقوق ملكية يبقى محدش ليه حق يعدل في البرنامج . لا يا اخي البرنامج ملك لنا ولدينا السورس وكلمات المرور ولنا الحق في تعديلة والاضافة اليه والحذف منه يا ريت تشرحلي الموضوع ده ع الخاص لاني مش فاهم بالظبط , بس مبدأيا , ادخل ع الداتابيز واكتب SELECT GREG_DATE , HIJRI_DATE FROM MAIN.GREG_HIJ_BASE ; وقولي طلعلك ايه . لو في مشكلة في الدخول ع الداتابيز يا ريت تعرفني . عملتها على ال TOAD والتنيجة يالصورة المرفقة وهذان الحقلان يتم ضبط التاريخ الهجري منهم اذا تقدم او تاخر يوم او يومين تقديم بلاغ
بتاريخ: 22 أبريل 201510 سنة comment_261962 بيتم ضبط الهجرى منهم ازاي يا بمشهندس , هو الميلادي ده جه منين اصلا ؟ مش دخل وبعدين حولتوه لهجرى ؟ تقديم بلاغ
بتاريخ: 22 أبريل 201510 سنة كاتب الموضوع comment_261963 بيتم ضبط الهجرى منهم ازاي يا بمشهندس , هو الميلادي ده جه منين اصلا ؟ مش دخل وبعدين حولتوه لهجرى ؟ اخي الكريم في بعض الشهور الهجرية وخصوصا التي يكون شهرها 29 يوم عندما نفتح البرنامج نلقي التاريخ الهجري متقدم يوما مثلا نفترض اننا في نهاية الشهر العربي اليوم فعندما افتح البرنامج يظهر تاريخ اليوم محولا الى الهجري اعلى الشاشة ولكن بدلا من ان يكون مثلا 1436/7/1 يكون 1436/7/2 وفي هذه الحاله اذهب الى قاعدة البيانات في الجدول GREG_HIJ_BASE واسجل في الحقل GREG_DATE تاريخ اليوم الميلادي وفي الحقل HIJRI_DATE اسجل التاريخ الموافق له بالهجري واخرج من البرنامج وادخل مره اخري فيصبح التاريخ الهجري مطابق لتاريخ اليوم حسب التاريخ الذي وضعته يالجدول GREG_HIJ_BASE وانوه لك ان كل شاشة من شاشات البرنامج يوجد بها هذا PROCEDURE المسمى CALENDAR_FUNCTION والذي يتم من خلاله تحويل التاريخ الميلادي ليوم العمل الى هجري PROCEDURE CALENDAR_FUNCTION(P_DATE_IN IN DATE,TYPE_CAL IN CHAR, RET_DATE IN OUT DATE) IS P_HIYY_CAL1 NUMBER; P_HIYY_CAL2 NUMBER; P_HIMM_CAL1 NUMBER; P_HIMM_CAL2 NUMBER; P_DATE_EN DATE; P_DATE_EN2 DATE; P_DATE_HI DATE; P_DATE_HI2 DATE; RET_EN_DATE DATE; RET_HI_DATE DATE; BEGIN IF TYPE_CAL = 'H' THEN --SELECT TO_DATE(CODE_NAME,'DD-MM-YYYY'),TO_DATE(CODE_SHORT,'DD-MM-YYYY') select GREG_DATE, HIJRI_DATE into P_DATE_EN,P_DATE_HI from main.GREG_HIJ_BASE where greg_date = ( select MAX(greg_date) from MAIN.GREG_HIJ_BASE where greg_date <= P_DATE_IN); P_HIYY_CAL1:=TRUNC((P_DATE_IN-P_DATE_EN)/355); P_HIYY_CAL2:=MOD ((P_DATE_IN-P_DATE_EN),355); P_HIMM_CAL1:=TRUNC(P_HIYY_CAL2/29.5); P_HIMM_CAL2:=MOD (P_HIYY_CAL2,29.5); RET_DATE :=ADD_MONTHS(P_DATE_HI,(12*P_HIYY_CAL1)+P_HIMM_CAL1); RET_DATE :=RET_DATE+P_HIMM_CAL2; ELSE select GREG_DATE, HIJRI_DATE into P_DATE_EN,P_DATE_HI from main.GREG_HIJ_BASE where greg_date = ( select MAX(greg_date) from MAIN.GREG_HIJ_BASE where hijri_date <= P_DATE_IN); RET_EN_DATE:=P_DATE_EN2+(P_DATE_IN-P_DATE_HI2); CALENDAR_FUNCTION(RET_EN_DATE,'H',RET_HI_DATE); RET_DATE:= RET_EN_DATE-TRUNC(RET_HI_DATE-P_DATE_HI2); END IF; END CALENDAR_FUNCTION; وبالطبع هذا ال PROCEDURE يبدا عملية التحويل للتاريخ الهجري من اعلى تاريخ انا وضعته في الجدول GREG_HIJ_BASE تنوية اخر من خلال TRIGGER الـ PRE-FORM الموجود بكل شاشة يتم استدعاء التاريخ والوقت وغيره اعلى الشاشة من خلال الكود التالي Set_Window_Property('WINDOW0',TITLE,:HEAD.SCREEN_TITLE||' - '||:HEAD.SCREEN_CODE||' '||:HEAD.USER_NAME||' '||:HEAD.TIMES||' '||:HEAD.DB_DATE_STRING); اتمنى ان اكون وضحت لك ماتريده تم تعديل 22 أبريل 201510 سنة بواسطة mohd_yakout تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.