بتاريخ: 17 ديسمبر 200916 سنة comment_179527 السلام عليكمفي شاشة من شاشات المشروع قمت بادراج سبعة حقولالحقل الأول يعرض تاريخ اليوم الثاني تاريخ غداًالثالث تاريخ بعد غد ....الخ :CONTROL.DATE1:=GET_SYSDATE; :CONTROL.DATE2:=GET_SYSDATE+1; :CONTROL.DATE3:=GET_SYSDATE+2; :CONTROL.DATE4:=GET_SYSDATE+3; :CONTROL.DATE5:=GET_SYSDATE+4; :CONTROL.DATE6:=GET_SYSDATE+5; :CONTROL.DATE7:=GET_SYSDATE+6; المطلوب أنه لو صادف حقل من هذه الحقول تاريخ يوم الجمعة أو السبت أريده أن يقوم بتخطي هذا التاريخ وعرض تاريخ اليوم الذي يليه تلقائياً أي يوم الأحد لأن يومي الجمعة والسبت هي اجازة رسمية ولا أريد أن يقوم بعرض تاريخيهما في أي حقل من الحقول ..أريده أن يقوم بعرض تواريخ أيام الأسبوع كل ٍ في حقله دون عرض تواريخ يومي الجمعة والسبت يجب أن يتخطاهما وذلك عن طريق كود معين ..عرض التواريخ في كل حقل يتم بشكل دوري أي أنه في كل يوم يتم تشغيل هذه الشاشة فان الحقل الأول يأخذ تاريخ اليوم والثاني تاريخ غدا وهكذا ..الذي أريده أن لو تم تشغيل البرنامج يوم الخميس مثلا فان الحقل الأول يأخذ تاريخ يوم الخميس والثاني ياخذ تاريخ يوم الأحد لأنه كما ذكرت سابقا فان الجمعة والسبت اجازة رسمية ..أرجو أرجو المساعدة العاجلة للضرورة القصوى..تحياتيبريزون بريك تم تعديل 17 ديسمبر 200916 سنة بواسطة PrisonBreak تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179528 هذه الفنكشن للاخ مصطفى تستثني ايام الجمع من بين تاريخيناتمنى منك ان تعدل فيها لما تريده انت create or replace function fri_bet (date1 date,date2 date ) return number as day_bet number; day number; fri_count number :=0; begin select date2-date1 into day_bet from dual; for i in 1.. day_bet+1 loop select to_char(date1-1+i,'d') into day from dual; if day=7 then fri_count:=fri_count+1; end if; end loop; return(fri_count); end; تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179532 يعني انت عايز عرض الايام ده خلال الاسبوع ده بس ، ولا على علطول كأنها نتيجة محذوف منها الاجازات ؟؟؟ تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179539 طيب بغض النظر عن اجابة سؤاللي اللي فوق اتفضل ياسيدي ده الحل من وجهة نظري هتكريت TYPE وهتكريت FUNCTION_TABLE على الداتا بيز CREATE OR REPLACE TYPE CLND_TEST AS TABLE OF DATE ; CREATE OR REPLACE FUNCTION GET_CLND RETURN CLND_TEST PIPELINED IS BEGIN FOR i IN 0 .. 6 LOOP IF TRIM(TO_CHAR(SYSDATE+I,'DAY')) NOT IN(TRIM('FRIDAY'),TRIM('SATURDAY')) THEN PIPE ROW (SYSDATE+I); end if; END LOOP; RETURN; end; / وده السكلتاية اللي هتجيب النتائج ان شاء الله SELECT * FROM TABLE(GET_CLND()) اه ملحوظة لو اللغة عندك عربي يبقى بدل NOT IN(TRIM('FRIDAY'),TRIM('SATURDAY')) هتيبقى NOT IN(TRIM('الجمعة'),TRIM('السبت')) اتمنى ان يكون حل مناسب تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179550 أخي عبدالله أريد استثناء أيام الجمعة والسبت على طول وليس في أسبوع محدد بل على طول ..وكيف سأقوم باستدعاء هذه الفتكشن في كل حقل بحيث أن يعرض كل حقل تاريخ اليوم التالي والذي يليه ...الختحياتي لك أخي عبدالله على المشاركة المميزةوألف شكر لك أخي ماهر على المشاركة الرائعة .. تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179551 معلش ياباشا هنعمل تعديل عشان نعرف نعرضها على الفورمة معلش انا كنت فاكرك عايزه في الداتا بيز على العموم ده التعديلات CREATE OR REPLACE TYPE CLND_OBJ AS OBJECT( RECID INTEGER , MY_DATE DATE ); CREATE OR REPLACE TYPE CLND_TYPE AS TABLE OF CLND_OBJ; CREATE OR REPLACE FUNCTION GET_CLND RETURN CLND_TYPE PIPELINED IS V_CONUT INTEGER :=0; BEGIN FOR I IN 0 .. 6 LOOP IF TRIM(TO_CHAR(SYSDATE+I,'DAY')) NOT IN(TRIM('FRIDAY'),TRIM('SATURDAY')) THEN V_CONUT := V_CONUT +1; PIPE ROW (CLND_OBJ (V_CONUT,SYSDATE+I)); end if; END LOOP; RETURN; end; / وهتعرضها في الفورمة كده SELECT MY_DATE INTO :CONTROL.DATE1 FROM TABLE(GET_CLND()) WHERE RECID=1; SELECT MY_DATE INTO :CONTROL.DATE2 FROM TABLE(GET_CLND()) WHERE RECID=2; SELECT MY_DATE INTO :CONTROL.DATE3 FROM TABLE(GET_CLND()) WHERE RECID=3; SELECT MY_DATE INTO :CONTROL.DATE4 FROM TABLE(GET_CLND()) WHERE RECID=4; SELECT MY_DATE INTO :CONTROL.DATE5 FROM TABLE(GET_CLND()) WHERE RECID=5; جرب ياباشا وقولي تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179554 أخي عبدالله ظهر الخطأ التاليتحذير: تم تكوين نوع مع أخطاء ترجمة تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179556 تم تكوين وظيفة ..سأقوم بالتجربة الأن والرد تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179559 ألف ألف ألف شكر لك أخي عبدالله أنا مش عارف أقولك ايهتمت العملية بنجاحولكن أخي عبدالله هناك سؤال آخرلو صادف الحقل الثاني ( على سبيل المثال ) تاريخ آخر الشهر أريده أن لا يقوم بتعبئة باقي الحقول( الثالث , الرابع , الخامس ) بأي تاريخ وأن تكون فارغة ..كيف يمكن عمل ذلك ..؟وألف شكر لك أخي عبدالله على المساعدة الكبيرة تم تعديل 18 ديسمبر 200916 سنة بواسطة Amgad تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179562 وأخي عبدالله أريد أن أعرض في الحقول الخمسة السابقة التاريخ + اليوم .. هل يمكن عمل ذلك ..؟ليس شرط أن أقوم بعرضهم في نفس الحقل ..أريد مثلا عرض اليوم في حقول مستقلة كيف يمكن عمل ذلك ..؟وتحياتي أخي عبدالله تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179563 ياباشا ... لاشكر على واجببالنسبة للسؤال بتاعك ... هنحتاج نعدل الفانكشن وتبقى بالشكل ده CREATE OR REPLACE FUNCTION GET_CLND RETURN CLND_TYPE PIPELINED IS V_CONUT INTEGER :=0; V_DATE DATE ; BEGIN FOR I IN 0 .. 6 LOOP IF TRIM(TO_CHAR(SYSDATE+I,'DAY')) NOT IN(TRIM('FRIDAY'),TRIM('SATURDAY')) THEN V_CONUT := V_CONUT +1; IF TRIM(TO_CHAR(SYSDATE+I,'MM')) <> TRIM(TO_CHAR(SYSDATE,'MM')) THEN V_DATE := NULL ; ELSE V_DATE := SYSDATE+I; END IF ; PIPE ROW (CLND_OBJ (V_CONUT,V_DATE)); end if; END LOOP; RETURN; end; / جرب ياباشا وانا تحت امرك تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179564 بالنسبة لسؤال اظهار اليوم براحتك ياباشا لو عايز تظهر اليوم في نفس الحقل هتغير الفانكشن لتالت مرة وهتزود اليوم ... بس كده هنعدل في النوع بتاع الاوبجكت هنخلليه بدل ما يكون تاريخ هيبقى VARCHAR2ونكريت PL_TABLE تاني وبعد كده نكريت الفانكشنلو انت مش فارقه معاك في نفس الايتم ولا لأ يبقى هتعمل 5 ايتم تاني على الفورم .... وليكن ITEM1 , ITEM2 ,ITEM3,ITEM4,ITEM5وفي نفس الكود اللي كنت بتنادي فيه الفانكشن اللي فاتت هتكتب الكود ده ... بس طبعا لكل ايتم ، انا عملته على ايتم واحد ، كمل بأه انت باقي اللايتم SELECT TO_CHAR(:CONTROL.DATE1,'DAY','nls_date_language=arabic') INTO :CONTROL.ITEM11 FROM DUAL ; وبالمثل على الاربعة الايتم التانين ، مع الاربع تواريخ التانينجرب ياباشا ... وانا تحت امرك يافندممعلش بأه لو حبيت يظهر اليوم في نفس الايتم ... هتستنى عليا بأه لبكرة ، عشان عندي شوية شغل تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179566 أخي العزيز فقط استخدم في الwhere clause هذا الشرط where to_char(your_date,'d') <= 5 تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179567 لا أعلم كيف أشكرك أخي عبداللهتم الحل كما أريد بالضبطألف شكر لك أخي على هذه المساعدة الكبيرة تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179568 والشكر الجزيل لأخي أحمدلقد قام أخي عبدالله بالحل الكلي كما أريد بالضبط تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة comment_179569 السلام عليكم ورحمة الله شكرا لجميع الأخوه ( ماهر - عبدالله - احمد ) على المشاركات المثمرة... السريعة... وعلى روح التعاون لحل تساؤل الأخ / PrisonBreakوهذا ليس بغريب على اعضاء منتدانا الحبيب ... الكرام لقد استفدنا من هذه المشاركة ... وسيتسفيد منها اخرين جزاكم الله خيرا------------أعجبنى توقيع الأخ / عبده قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهمهم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم تقديم بلاغ
بتاريخ: 17 ديسمبر 200916 سنة كاتب الموضوع comment_179572 فعلا أن هذا المنتدى مليئ بالأعضاء المميزين والذين يمتلكون روح التعاون ألف شكر لأعضاء هذا المنتدى الرائع وألف شكر لمشرفنا المميز أمجدتحياتي تم تعديل 17 ديسمبر 200916 سنة بواسطة PrisonBreak تقديم بلاغ
بتاريخ: 18 ديسمبر 200916 سنة comment_179622 جزا الله خيراً كل من ساهم ولو بكلمة بسيطة في حل مشكلة من مشكلات احد الاعضاءواتمنى اي واحد داخل يجاوب او يساهم في الحل ... انه يجدد النية لله عز وجل ، مين عارف قد تكون الاجابة ده سبب عتق رقبتك من النار ... قال رسول الله صلي الله عليه وسلم " من نفث عن مؤمن كربة من كرب الدنيا نفث الله عنه كربة من كرب يوم القيامة ، ومن يسر على معسر يسر الله عليه في الدنيا والاخرة ، والله في عون العبد ما دام العبد في عون اخيه " .... او كما قال صلي الله عليه وسلم..وفعلا بارك الله في صاحب فكرة هذا المنتدى الجميل ... وعلى القائمين عليه ، وعلى الاعضاء الاكثر من ممتازين جزاكم الله اخي امجد .... وربنا يتقبل وجزاكم الله خيرا جميعا---------------------------------------------------------------اخي PrisonBreak الحمد لله ان مشكلتك اتحلت ...وتحياتي إلي أهل غزة العظام ... وربنا يحرر الاقصى الاسير ، اللهم ءاميناخوك : عبدالله تم تعديل 18 ديسمبر 200916 سنة بواسطة abdu1_far تقديم بلاغ
بتاريخ: 18 ديسمبر 200916 سنة comment_179626 جزا الله خيراً كل من ساهم ولو بكلمة بسيطة في حل مشكلة من مشكلات احد الاعضاءواتمنى اي واحد داخل يجاوب او يساهم في الحل ... انه يجدد النية لله عز وجل ، مين عارف قد تكون الاجابة ده سبب عتق رقبتك من النار ... قال رسول الله صلي الله عليه وسلم " من نفث عن مؤمن كربة من كرب الدنيا نفث الله عنه كربة من كرب يوم القيامة ، ومن يسر على معسر يسر الله عليه في الدنيا والاخرة ، والله في عون العبد ما دام العبد في عون اخيه " .... او كما قال صلي الله عليه وسلم..وفعلا بارك الله في صاحب فكرة هذا المنتدى الجميل ... وعلى القائمين عليه ، وعلى الاعضاء الاكثر من ممتازين جزاكم الله اخي امجد .... وربنا يتقبل وجزاكم الله خيرا جميعا---------------------------------------------------------------اخي PrisonBreak الحمد لله ان مشكلتك اتحلت ...وتحياتي إلي أهل غزة العظام ... وربنا يحرر الاقصى الاسير ، اللهم ءاميناخوك : عبدالله جزاك الله كل خير اخوي عبداللهوانت دائما سباق في الحلول الرهيبة وبارك الله فيك ووسع لك رزقكشكرا لكم جميعا تقديم بلاغ
بتاريخ: 18 ديسمبر 200916 سنة كاتب الموضوع comment_179629 جزا الله خيراً كل من ساهم ولو بكلمة بسيطة في حل مشكلة من مشكلات احد الاعضاءواتمنى اي واحد داخل يجاوب او يساهم في الحل ... انه يجدد النية لله عز وجل ، مين عارف قد تكون الاجابة ده سبب عتق رقبتك من النار ... قال رسول الله صلي الله عليه وسلم " من نفث عن مؤمن كربة من كرب الدنيا نفث الله عنه كربة من كرب يوم القيامة ، ومن يسر على معسر يسر الله عليه في الدنيا والاخرة ، والله في عون العبد ما دام العبد في عون اخيه " .... او كما قال صلي الله عليه وسلم..وفعلا بارك الله في صاحب فكرة هذا المنتدى الجميل ... وعلى القائمين عليه ، وعلى الاعضاء الاكثر من ممتازين جزاكم الله اخي امجد .... وربنا يتقبل وجزاكم الله خيرا جميعا---------------------------------------------------------------اخي PrisonBreak الحمد لله ان مشكلتك اتحلت ...وتحياتي إلي أهل غزة العظام ... وربنا يحرر الاقصى الاسير ، اللهم ءاميناخوك : عبدالله آمين يا رب جزاك الله كل خير أخي عبد اللهألف شكر لك ولكل الأعضاء تحياتي تقديم بلاغ
بتاريخ: 2 فبراير 201016 سنة comment_183968 أخي Prison Break جرب هذا الحل ولو أني أعلم أني متأخر جداً ولعلك قد حللت المشكلة بالفعل ولكن محاولة select sysdate + decode(to_char(sysdate ,'d'), 6, null, 7, null, 0) into :CONTROL.DATE1 from dual; select sysdate + decode(to_char(sysdate+1,'d'), 6, null, 7, null, 1) into :CONTROL.DATE1 from dual; select sysdate + decode(to_char(sysdate+2,'d'), 6, null, 7, null, 2) into :CONTROL.DATE1 from dual; select sysdate + decode(to_char(sysdate+3,'d'), 6, null, 7, null, 3) into :CONTROL.DATE1 from dual; select sysdate + decode(to_char(sysdate+4,'d'), 6, null, 7, null, 4) into :CONTROL.DATE1 from dual; select sysdate + decode(to_char(sysdate+5,'d'), 6, null, 7, null, 5) into :CONTROL.DATE1 from dual; select sysdate + decode(to_char(sysdate+6,'d'), 6, null, 7, null, 6) into :CONTROL.DATE1 from dual; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.