miash80 بتاريخ: 9 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2013 (معدل) موضوع اليوم مهم جدا وضروري الموضوع اليوم عن الــ Trigger اتعرفون ما هو الترجير الترجير هو PL.SQL Code ينطلق عن حدوث امر معين . Event : Pre : execute trigger before event ينطلق الترجير قبل حدوت الحدث Post :execute trigger after event ينطلق الترجير بعد حدوث الحدث When : execute trigger and event together ينطلق الترجير مع حدوث الحدث On : delete event execute trigger يلغي عملية وينفذ كود الترجير Key : Delete function of the key and execute trigger يلغي الاقتران الخاص بالكبسات وينفذ الترجير Trigger Level 1. Form Trigger 2. Block Trigger 3. Item Trigger يوجد الترجير على ثلاث مستويات Form And block and Item سنأخذ امثلة على كل نوع ان شاء الله تم تعديل 9 ديسمبر 2013 بواسطة miash80 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 9 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2013 سنأخذ مثال بسيط اريد عندما افتح الفورم اكبر الــ window الرئسية عند فتح الفورم يكون فورم التنفيذ بهذا الشكل اذهب الى الفورم ثم الى ترجير ثم اضعط على علامة + لاضافة ترجير جديد كيف احدد الترجير...؟ اريد ترجير ينفذ عندما افتح الفورم ما هو هذا الترجير WHEN-NEW-FORM-INSTANCE من اسمه واضح وظيفته نكتب داخله هذا الكود لنرى النتيجة نعمل تنفيذ للبرنامج كالتالي ولتكبير الــ Window الموجود عليها البلوك نكتب هذا الكود لنرى النتيجة نعمل تنفيذ للبرنامج كالتالي تم المطلوب والحمدلله 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 9 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2013 لوضع عنوان لكل Window نضيف كود على نفس الترجير كالتالي وتكون النتيجة عند التنفيذ كالتالي 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Bosaeed بتاريخ: 11 ديسمبر 2013 تقديم بلاغ مشاركة بتاريخ: 11 ديسمبر 2013 للأجابة على سؤال الاخ العزيز ولأكمال شرح العلاقة بين الماستر والديتل نذهب الى خصائص العلاقة عن طريق F4 ستكون عندنا هذه الشاشة Prevent Masterless Operations : خاصية الاستعلام عن الديتل دون وجود ماستر Deferred : لا يأتي بالديتل الا لما استعلم عنه Automatic Query : مجرد ما يدخل على الديتل يأتي بالبيانات ولتذكير دائما عند بناء علاقة ابنيها في بلوك الماستر جزيت خيراً استاذ موسى موضوع اليوم مهم جدا وضروري الموضوع اليوم عن الــ Trigger اتعرفون ما هو الترجير الترجير هو PL.SQL Code ينطلق عن حدوث امر معين . Event : Pre : execute trigger before event ينطلق الترجير قبل حدوت الحدث Post :execute trigger after event ينطلق الترجير بعد حدوث الحدث When : execute trigger and event together ينطلق الترجير مع حدوث الحدث On : delete event execute trigger يلغي عملية وينفذ كود الترجير Key : Delete function of the key and execute trigger يلغي الاقتران الخاص بالكبسات وينفذ الترجير Trigger Level 1. Form Trigger 2. Block Trigger 3. Item Trigger يوجد الترجير على ثلاث مستويات Form And block and Item سنأخذ امثلة على كل نوع ان شاء الله من اهم المواضيع فعلا اخي وياريت تتحمل كثرة اسئلتي اخي موسى لأني ما زلت مبتدأ هل يوجد ترجير على مستوى Record؟ 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 18 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 18 ديسمبر 2013 للأجابة على سؤال الاخ العزيز ولأكمال شرح العلاقة بين الماستر والديتل نذهب الى خصائص العلاقة عن طريق F4 ستكون عندنا هذه الشاشة Prevent Masterless Operations : خاصية الاستعلام عن الديتل دون وجود ماستر Deferred : لا يأتي بالديتل الا لما استعلم عنه Automatic Query : مجرد ما يدخل على الديتل يأتي بالبيانات ولتذكير دائما عند بناء علاقة ابنيها في بلوك الماستر جزيت خيراً استاذ موسى الله يبارك فيك اخي العزيز موضوع اليوم مهم جدا وضروري الموضوع اليوم عن الــ Trigger اتعرفون ما هو الترجير الترجير هو PL.SQL Code ينطلق عن حدوث امر معين . Event : Pre : execute trigger before event ينطلق الترجير قبل حدوت الحدث Post :execute trigger after event ينطلق الترجير بعد حدوث الحدث When : execute trigger and event together ينطلق الترجير مع حدوث الحدث On : delete event execute trigger يلغي عملية وينفذ كود الترجير Key : Delete function of the key and execute trigger يلغي الاقتران الخاص بالكبسات وينفذ الترجير Trigger Level 1. Form Trigger 2. Block Trigger 3. Item Trigger يوجد الترجير على ثلاث مستويات Form And block and Item سنأخذ امثلة على كل نوع ان شاء الله من اهم المواضيع فعلا اخي وياريت تتحمل كثرة اسئلتي اخي موسى لأني ما زلت مبتدأ هل يوجد ترجير على مستوى Record؟ طبعا اخي الفاضل يوجد ترجيرات خاصة بــ Record وانا في الخدمة في أي سؤال 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 18 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 18 ديسمبر 2013 انا بعتذر عن التأخر عن كتابة باقي الدروس بسبب انقطاع الكهرباء للمدة 4 ايام بسبب الثلوج وان شاء الله سأكمل باقي الدروس بداية الاسبوع القادم 4 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 22 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2013 اليوم موضوعنا عن شريط المهام الموجود في الفورم كتالي شريط المهام هذا موجود من شركة اوراكل يظهر عند عمل تنفيذ للبرنامج وكما نرى يوجد لكل كبسة وظيفة معينة وهذا الشريط يظهر للمستخدم عن التنفيذ نريد ان نتعلم كيف نعمل شريط مهام خاص بنا بالشكل الذي نريد ونتخلص من شريط المهام الخاص بأوراكل 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 22 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2013 (معدل) بسم الله نبدأ على فرض يوجد عندنا شاشة الموظفين كالتالي واريد ان اعمل بلوك خاص لتحكم بمهام هذه الشاشة نضيف Canvas جديدة ونسميها Canvas_Control كالتالي ثم نضيف بلوك جديد Manually ونسميه Block_Control كالتالي ثم نذهب الى خصائص الــCanvas ونغير بعض الخصائص كالتالي وبعدها نعمل تنفيذ للبرنامج كالتالي كما نلاحظ ظهر شريط المهام وباللون الاحمر لكن لا يوجد عليه اي ازرار (( كبسات )) الان علينا اضافة كبسات التي نحتاجها في الشاشة على سبيل المثال نريد كبسة للخروج من الفورم وكبسة لأنشاء سجل جديد وكبسة تخزين نذهب الى الصفحة الخاصة بشاشة التحكم كتالي ضفنا 3 كبسات على بلوك الخاص بالتحكم كالتالي الان ندخل على خصائص كل كبسة ونغير بعض الخصائص كالتالي كبسة الخروج من الفورم Name : b_exit Label: Exit Mouse Navigate :No كبسة انشاء سجل جديد من الفورم Name : b_create Label: Create Mouse Navigate :No كبسة التخزين من الفورم Name : b_save Label: Save Mouse Navigate :No عند عمل تنفيذ للشاشة يكون عندنا هذا الشكل كلام جميل ... لكن هذه الكبسات لا تعمل عند الضغط عليها المطلوب منا تفعيل هذه الكبسات عن طريق كتابة كود داخل الترجير الخاص بهذه الكبسات نذهب الى كل كبسة ونضيف ترجير جديد يا ترى ما هو الترجير المطلوب الترجبر المطلوب هو اسمه WHEN-BUTTON-PRESSED ونكتب داخله هذا الكود كبسة الخروج :الكود التالي exit_form; كبسة اضافة سجل جديد :الكود التالي create_record; كبسة التخزين :الكود التالي commit_form; كما نرى الكود يدل على وظيفة كل كبسة . نعمل تنفيذ ونجرب كل كبسة . تم المطلوب بنجاح تم تعديل 22 ديسمبر 2013 بواسطة ميسم الكرام 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 22 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2013 (معدل) وللتخلص من شريط المهام الخاص بأوركل نذهب الى خصائص الفورم خاصية اسمها Menu Module يوجد بجانبها DEFAULT&SMARTBAR كالتالي نحذف DEFAULT&SMARTBAR كالتالي ويكون الشكل النهائي كالتالي تم اللازم والحمدلله تم تعديل 22 ديسمبر 2013 بواسطة miash80 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 23 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 23 ديسمبر 2013 السلام عليكم ورحمة الله وبركاته سنكمل اليوم باذن الله موضوع شريط المهام يوجد كثير من الاكواد الجاهزة من اوراكل المستخدمة في شريط المهام اهم هذه الاكواد بالامكان تجربة هذه الاكواد وواضح استخدام كل كود على ماذا يدل من خلال اسمه 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 23 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 23 ديسمبر 2013 الموضوع القادم موضوع جميل وهو عن Alerts ان شاء الله سأقوم غدا بشرحه 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 24 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 24 ديسمبر 2013 Alerts : كم قلنا سابقا هو عبارة عن شاشة تحذيرية تظهر للمستخدم عند حدوث امر معين ولكي نفهم موضوع الــ Alerts سنأخذ مثال اريد ان اعمل شاشة تحذيرية عند حذف سجل من شاشة الموظفين على فرض يوجد شاشة خاصة بالموظفين كالتالي كما نرى عند تنفيذ البرنامج لا ياتي بالبيانات بل يجب عمل تنفيذ استعلام الامر مزعج ولحل هذه المشكلة يجب ان نكتب ترجيرعند تنفيذ البرنامج يأتي بالبيانات مباشرة ما هو هذا الترجير وعلى أي مستوى ...؟ نذهب الى الفورم ثم الى ترجير نضيف ترجير جديد اسمه WHEN-NEW-FORM-INSTANCE يعني لما ادخل على الفورم ماذا اعمل ونكتب داخل الترجير هذا الكود execute_query; هذا الكود معناه نفذ الاستعلام وبما انا لا يوجد شرط رح يأتي بجميع البيانات كالتالي كلام جميل نرجع الى موضوعنا الاساسي وهو Alerts نذهب الى Alert من القائمة الرئيسية ونضغط اضافة + ويخرج لنا هذا الشكل نذهب الى خصائص الــ Alert الجديد عن طريق F4 ونغير بعض الخصائص كالتالي ثم نذهب الى شاشة الموظفين ونضيف Button جديد نسميه Delete Record كتالي ونضيف ترجير على هذا Button واسمه WHEN-BUTTON-PRESSED ونكتب داخل هذا الترجير هذا الكود declare n number; begin n:=show_alert('DELETE_ALERT'); if n=alert_button1 then delete_record; commit; end if; end; ونعمل بعدها تنفيذ ونحدد سجل معين ونكبس على كبسة Delete Record وتكون هذه النتيجة اذا كبسنا على Ok يحذف السجل واذا كبسنا على cancel يخرج من الشاشة التحذيرية تم اللازم والحمدلله غدا ان شاء الله ساعطي مثال اخر على الــ Alert 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 25 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 25 ديسمبر 2013 (معدل) السلام عليكم ورحمة الله وبركاته ان شاء الله سنأخذ مثال جديد على موضوع الـــ Alert ولكن قبل ذلك سنتحدث عن Alert Style وهي اشكال الــ Alert وهي Stop Caution Note طبعا هذه فقط اشكال وتؤدي نفس الوظيفة تم تعديل 25 ديسمبر 2013 بواسطة miash80 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
حسين محمد_25800 بتاريخ: 29 ديسمبر 2013 تقديم بلاغ مشاركة بتاريخ: 29 ديسمبر 2013 مجهود رائع فعلا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 30 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 30 ديسمبر 2013 مرورك هو الرائع اخي العزيز اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 30 ديسمبر 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 30 ديسمبر 2013 (معدل) السلام عليكم ورحمة الله وبركاته ان شاء الله سنأخذ مثال جديد على موضوع الـــ Alert على فرض عندي شاشة يوجد فيها بلوكين ماستر وديتل بلوك الاقسام وبلوك الموظفين كالتالي ونريد عمل كبسة للحذف السجلات سواء في الماستر او الديتل وعمل شاشة تنبيه عند عمل حذف نعمل على اضافة بلوك خاص بكبسات التحكم بالشاشات كما تعلمنا في السابق كالتالي الان نعمل على اضافة Alert جديد نفس المثال السابق الان نضيف Button جديد على بلوك التحكم ونسميه Delete Record ونكتب داخله هذا الكود declare n number; msg varchar2(20); begin if :SYSTEM.CURSOR_BLOCK ='DEPT' THEN MSG:=:DNAME; ELSIF :SYSTEM.CURSOR_BLOCK ='EMP' THEN MSG:=:ENAME; END IF; SET_ALERT_PROPERTY('DEL_ALERT',ALERT_MESSAGE_TEXT,'Are Sure To Delete '||' '||msg||' '||'Record'); n:=show_alert('DEL_ALERT'); if n = 1 then delete_record; end if; end; Cursor هو المؤشر ((الماوس )) Cursor_block المؤشر على اي بلوك موجود طبعا دائما وابداَ بعد SYSTEM تكتب الاحرف كبيرة S :SYSTEM.CURSOR_BLOCK تخزين مكان وقوف الماوس في أي بلوك set_alert_property صيغة كتابة مسج في الشاشة التحذيرية 'DEL_ALERT' اسم الشاشة التحذيرية ALERT_MESSAGE_TEXT جاهزة من اوراكل خاصة بحقل مسج الشاشة التحذيرية 'Are Sure To Delete '||' '||msg||' '||'Record' الرسالة التي تظهر عند استدعاء الشاشة التحذيرية طبعا هذا الكود يلغي الشاشة التحذيرية الاساسية وتخرج مكانها هذه الرسالة وعند عمل حذف لسجل من بلوك الاقسام لقسم ACCOUNTING تكون هذه النتيجة وأذا عملنا حذف لسجل من بلوك الموظفين للموظف MARTIN تكون هذه النتيجة تم اللازم والحمدلله تم تعديل 30 ديسمبر 2013 بواسطة miash80 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 2 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 يناير 2014 السلام عليكم ورحمة الله وبركانه اليوم سنأخذ بعض الامثلة على الفورم على فرض عندي شاشة بالموظفين كالتالي كما نرى يوجد مجموعة معلومات للموظفين من ضمنها رقم القسم كلام جميل اريد ان اضع اسم القسم بجانب رقم القسم اولا اقوم بأضافة DISPLAYITEM من القائمة واغير بعض الخصائص عن طريق F4 التالي Name : DISP_DNAME Data Type :Char Maximum Length : 20 Data base Item : No Prompt : Dept Name Prompt Attachment Edge : Top Prompt Alignment :Center ويكون الشكل التالي طريقة استدعاء اسم القسم عن طريق ترجير على مستوى البلوك اسمه POST-QUERY نكتب داخله هذا الكود select dname into :emp.DISP_DNAME from dept where deptno=:emp.deptno; وتكون هذه النتيجة 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 2 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 يناير 2014 مثال اخر اريد ان احسب درجة الراتب لكل الموظفين بجانب حقل الراتب اولا اقوم بأضافة DISPLAYITEM من القائمة واغير بعض الخصائص عن طريق F4 التالي Name : DISP_GRADE Data Type :Number Data base Item : No Prompt : Grade Prompt Attachment Edge : Top Prompt Alignment :Center ونكتب داخل نفس الترجير POST-QUERY هذا الكود select GRADE into :DISP_GRADE from salgrade where :emp.sal between losal and hisal; وتكون النتيجة 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 2 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 يناير 2014 طيب في حالة اضافة سجل جديد في جدول الموظفين نعمل Insert record وتكون هذه النتيجة كما نرى المؤشر موجود في حقل رقم الموظف للتعبئة رقم الموظف وهذا الكلام غير صحيح لانه ان لا اعرف جميع ارقام الموظفين واحتمال ان اكتب رقم موجود اصلا لذا يجب ان لا اكتب داخل الحقل ويجب ان يأتي بأخر رقم ويضيف عليه واحد للسجل الجديد اول نذهب الى خصائص حقل رقم الموظف ونغير خاصية Item type الى Item type : Display Item ثم نذهب الى ترجير PRE-INSERT على مستوى البلوك ونكتب داخله هذه الكود declare n number; begin select max(empno) into n from emp; :empno := nvl(n,0)+1; end; نعمل تنفيذ للفورم ثم نعمل Insert Record وتكون هذه النتيجة كما نرى المؤشر في حقل اسم الموظف عند عمل اضافة سجل جديد ونعمل اضافة سجل جديد ونعمل تخزين وهذه النتيجة 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
suhaieb بتاريخ: 2 يناير 2014 تقديم بلاغ مشاركة بتاريخ: 2 يناير 2014 جزاك الله عنا كل خير وجعله في ميزان حسناتك وإلى الأمام فكله في ميزان حسناتك وان شاء الله يكون علم نافع ينتفع به وهو مما ينفع المرء بعد موته وإني اسأل الله العلي القدير أن يغفر لك ما تقدم من ذنبك وأن يحسن ويصلح أعمال القادمة وأن يغفر لوالديك وأن يغفر لي ولوالدي وللمسلمين والمسلمات والمؤمنين والمؤمنات الاحياء منهم والأموات وكما جمعنا الله في دار الدنيا أن يجمعنا عنده في دار الآخرة في جنات النعيم واصل ولا تنقطع أو تتوقف ولك خالص الشكر والتقدير 4 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 4 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 4 يناير 2014 الله يبارك فيك يا اخي العزيز والله يسلمك على هذا الدعاء الطيب وان شاء الله مستمرين الى النهاية وان شاء الله اوعدك بعد نهاية هذه الدروس ان تكون ملم بجميع امور الفورم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 4 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 4 يناير 2014 (معدل) مثال جديد : اريد ان اعمل فورم فيه بلوكين بلوك خاص بالموظفين وبلوك خاص بالاقسام ويوجد زرين زر خاص بالموظفين وزر خاص بالاقسام عند الضغط على زر الموظفين يظهر بلوك الموظفين ويختفي بلوك الاقسام وعند الضغط على زر الاقسام يظهر بلوك الاقسام ويختفي بلوك الموظفين بسم الله نبدء ننشأ فورم جديد ننشأ بلوك خاص بالاقسام من نوع Form يوجد فيه سجل واحد على canvas اسمه can_dept ننشأ بلوك خاص بالموظفين من نوع Tabular فيه 5 سجلات على canvas اسمه can_emp ننشأ بلوك خاص بكبسات التحكم وننشأ كبستين كبسة اسمها Go Department وكبسة اسمها Go Employee ونعطي هذه الخصائص لكل كبسة كبسة Go Employee نعطيها هذه الخصائص Name : GO_EMP label : Go Employee Mouse Navigate : No Visible : Yes كبسة Go Department نعطيها هذه الخصائص Name : GO_DEPT label : Go Department Mouse Navigate : No Visible : No نذهب الى كبسة Go Employee الى ترجير WHEN-BUTTON-PRESSED ونكتب هذا الكود go_block('emp'); set_item_property('GO_EMP',VISIBLE,PROPERTY_FALSE); set_item_property('GO_DEPT',VISIBLE,PROPERTY_TRUE); set_item_property('GO_DEPT',ENABLED,PROPERTY_TRUE); شرح الكود ثم نذهب الى كبسة Go Department الى ترجير WHEN-BUTTON-PRESSED ونكتب هذا الكود go_block('DEPT'); set_item_property('GO_DEPT',VISIBLE,PROPERTY_FALSE); set_item_property('GO_EMP',VISIBLE,PROPERTY_TRUE); set_item_property('GO_EMP',ENABLED,PROPERTY_TRUE); شرح الكود طبعا خاصية Enabled مرتبطة بخاصية Visible في حالة True يعني لما اعمل خاصية Visible : True يجب ان اتبعها بخاصية Enabled وتكون النتيجة عند عمل تنفيذ كالتالي وعند الكبس على Go Employee تكون النتيجة كالتالي وعند الكبس على Go Department تكون النتيجة كالتالي تم المطلوب والحمدلله تم تعديل 4 يناير 2014 بواسطة miash80 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 4 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 4 يناير 2014 مثال جديد : اريد ان اعمل فورم فيه بلوك خاص بالموظفين واريد ان اعمل خاصية اخفاء واظهار وتعطيل حقل الراتب بسم الله نبدء ننشأ فورم جديد ننشأ بلوك خاص بالموظفين من نوع Tabular فيه 5 سجلات كالتالي ثم نقوم بأضافة Radio Button ونذهب الى خصائصه عن طريق F4 ونغير التالي Name : Rg_Sal Database item : No Number Of Record Displayed : 1 ونعمل على أضافة 3 Button ونعطيهم هذه الخصائص وهذا الشكل عند عمل تنفيذ نذهب الى Rg_Sal وننشأ اسمه WHEN-RADIO-CHANGED ونكتب داخله هذا الكود if :RG_SAL = 3 then set_item_property('sal',visible,property_false); elsif :RG_SAL = 2 then set_item_property('sal',visible,property_true); set_item_property('sal',Enabled,property_false); else set_item_property('sal',visible,property_true); set_item_property('sal',Enabled,property_true); set_item_property('sal',navigable,property_true); set_item_property('sal',queryable,property_true); set_item_property('sal',updateable,property_true); end if; navigable : معناها اني استطيع ان ادخل عليه من خلال الماوس queryable : معناها اني استطيع ان اعمل استعلام في هذا الحقل updateable : معناها اني استطيع ان اعمل تعديل في هذا الحقل وعند عمل تنفيذ للفورم والضغط على Hide تكون هذه النتيجة كما نلاحظ حقل الراتب صار غير مرئي الان سنقوم بالضغط على Disable وتكون النتيجة كالتالي كما نلاحظ ظهر حقل الراتب لكن معطل يعني لا استطيع الكتابة داخله او التعديل عليه او الاضافة عليه الان سنقوم بالضغط على Show وتكون النتيجة كالتالي كما نلاحظ ظهر حقل الراتب واستطيع الكتابة داخله او التعديل عليه او الاضافة عليه او الاستعلام عليه تم اللازم والحمدلله ان شاء الله اذا لم يكن هنالك اسئلة سنبدء غدا بشرح موضوع مهم جدا وهو Program Units 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 5 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 5 يناير 2014 (معدل) موضوع اليوم عن Program Units Program Units كما قلنا سابقا هي عبارة عن مجموعة Function و Procedure و Package سنأخذ مثال على كل واحد سسنبدء بأخذ مثال على Function بسم الله نبدء اريد ان اكتب Function يحسب الراتب السنوي للموظفين نذهب الى Program Units من القائمة ونضغط على + ثم نحدد Function ونكتب اسمه Ann_sal ;كالتالي ونكتب داخله هذا الكود FUNCTION Ann_Sal (p_sal in number,p_comm in number) RETURN number IS BEGIN return nvl(p_sal,0)*12+nvl(p_comm,0); END; p_sal عبارة عن براميتر يدل على راتب الموظفين p_comm عبارة عن براميتر يدل على زيادة الموظفين return number الاقتران يرجع نوع القيمة رقم return nvl(p_sal,0)*12+nvl(p_comm,0); القيمة التي يرجعها الاقتران وكما نعرف يجب ان يرجع الاقتران قيمة واحدة على فرض عندي شاشة خاصة بالموظفين كالتالي اريد ان اضع حقل خاص بحساب الراتب السنوي نعمل على اضافة Display item ونعطيه هذه المواصفات Name : Ann_sal Data Type : Number Data base : No Prompt :Annul Salary Edge : Top Alignment : Center طريقة أستدعاء الــ Function كالتالي نذهب الى ترجير POST-QUERY ونكتب داخله هذا الكود begin :EMP.ANNUL_SALRY:=Ann_Sal (:emp.sal,:emp.comm); end; نعمل بعدها تنفيذ وتكون النتيجة EMP.ANNUL_SALRY: مكان ارجاع قيمة الراتب السنوي Ann_Sal اسم الــ Function :emp.sal براميتر الراتب ياخذ قيمته من هنا :emp.comm براميتر الزيادان يأخذ قيمته من هنا تم تعديل 5 يناير 2014 بواسطة miash80 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 6 يناير 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 6 يناير 2014 (معدل) سنأخذ مثال جديد على الـــ Procedure بسم الله نبدء اريد ان اكتب Procedure ياتي بأسم القسم بجانب رقم القسم على الشاشة نذهب الى Program Units من القائمة ونضغط على + ثم نحدد Procedure ونكتب اسمه Get_Dept كتالي ونكتب داخله هذا الكود PROCEDURE Get_Dept (pno in number, pname out varchar2) IS BEGIN select dname into pname from dept where deptno=pno; exception when others then pname := 'No Dept'; END; pno عبارة عن براميتر يدل على رقم القسم pname عبارة عن براميتر يدل على أسم القسم وكما نعرف الاجراء ممكن ان يرجع قيمة او اكثر من قيمة او ولا قيمة الان اضع حقل خاص بأسم القسم نعمل على اضافة Display item ونعطيه هذه المواصفات Name : N_dname Data Type : Char Data base : No Prompt :Department Edge : Top Alignment : Center طريقة أستدعاء الــ Procedure كالتالي نذهب الى ترجير POST-QUERY ونكتب داخله هذا الكود Get_Dept(:deptno,:N_DNAME); نعمل بعدها تنفيذ وتكون النتيجة المثال القادم عن الـــPackage تم تعديل 6 يناير 2014 بواسطة miash80 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.