بتاريخ: 15 ديسمبر 200619 سنة comment_86225 اخواني في هذا المنتدى الرائع تهانينا بالشكل الجديد للمنتدىواشكر القائمين على هذا المنتدى الله يحفظهم من كل مكروه000السلام عليكم ورحمة الله وبركاتة:- وبعداولا- احب ان اشارك بهذه الدروس المتواضعهثانيا- هذه الطريقة تعلمتها من استاذي الله يحفظه ( من الاردن الشقيق) بدون ذكر اسمه فهو غني عن التعريف0ثالثا- ارجو من احبتي عدم الانتدفاع والتفعال مع الموضوع حتى ينتهي ويكفيني ان اشاهد عدد القراء فقط0رابعا – انا عبد لله فقير قد اخطي قطعا فارجو تحملي وتصحيح اخطائي خامسا - هذه الطريقة انشأت بها برامج عملاقه تعمل منذو سنوات والحمد للهاخيرا – ارجو ان لاتنسونا من صالح الدعاءيتبع الدرس ( الاول ) انشاء الله تقديم بلاغ
بتاريخ: 15 ديسمبر 200619 سنة كاتب الموضوع comment_86230 الدرس الاولبسم الله نبداء1- انشي مشروع جديد MODULE2- انشي ثلاثة CANVASأ- الاولى اسمها mainب- الثانية اسمها BUTTONت- الثالثة اسمها CANVAS3 عدل في خصائي ال maincanvas typ = content width = 600 Height = 400عدل في خصائي ال BUTTONcanvas typ = stacked Viewport X Position = 0 Viewport Y Position = 330Viewport Width = 600 Viewport Height = 40 width = 600 Height = 40عدل في خصائي ال CANVAS3canvas typ = stacked Viewport X Position = 1 Viewport Y Position = 0Viewport Width = 600 Viewport Height = 40 width = 600 Height = 40--غير لون خلفية ال BUTTON وال CANVAS3 بلون واحد يختلف عن ال Main عدل في خاصية ال WINDOW1 Style = Dialog WINDOW Move Allowed = no Resize Allowed = no Maximize Allowed = no Minimize Allowed = no width = 600 Height = 400احفظ المشروع في مجلد ولاتقم بتنفيذهيتبع الدرس الثاني انشاء الله تقديم بلاغ
بتاريخ: 16 ديسمبر 200619 سنة كاتب الموضوع comment_86263 الدرس الثانيبسم الله نبداء:- الجداول المستخدمة في هذا الدرس جدول DEPT - Master وجدول EMP – Details ---- من المستخدم SCOTT اولا- ننشي Block يدوي ونسمية Block2 اضف في هذا البلوك Text item ولنسمية SYS_DATEعدل في خصائي هذا ال text item Data type = Date Maximum Length = 11 Initial Value = $$date$$ Format Mask = DD-MON-YYYYDatabase Item = no CANVAS = CANVAS3 في WHEN-NEW-ITEM-INSTANCE Triggers اكتب التاليGo_block('Button');(( لاتستعجل ))عرض ال CANVAS3 امامك قم بانشاء كائن نوع نص اكتب به( بسم الله الرحمن الرحيم)انشي نص اخر اكتب به ( مجموعة مستخدمي اوراكل العربية )==ثانيا – ننشي Block يدوي ونسمية BUTTON اضف في هذا البلوك عدد (عشرة) من نوع Bush Buttonنسمي الاول -- SCROLL_UP وفي خاصية Lable ( السجل الاخير)وفي خاصية BUTTON = CANVAS نسمي الثاني -- UP وفي خاصية Lable ( السجل التالي)وفي خاصية BUTTON = CANVASنسمي الثالث -- DOWN وفي خاصية Lable ( السجل السابق)وفي خاصية BUTTON = CANVAS نسمي الرابع -- SCROLL_DOWNوفي خاصية Lable ( السجل الاول)وفي خاصية BUTTON = CANVAS نسمي الخامس -- QUERYوفي خاصية Lable ( بـحـث )وفي خاصية BUTTON = CANVAS نسمي السادس -- NEWوفي خاصية Lable ( جديد )وفي خاصية BUTTON = CANVAS نسمي السابع -- EDITوفي خاصية Lable ( تعديل )وفي خاصية BUTTON = CANVAS نسمي الثامن -- SAVEوفي خاصية Lable ( حفظ )وفي خاصية BUTTON = CANVAS نسمي التاسع -- CANCELوفي خاصية Lable ( الغاء )وفي خاصية BUTTON = CANVAS نسمي العاشر -- EXITوفي خاصية Lable ( خروج )وفي خاصية BUTTON = CANVAS ==اعرض هذا CANVAS امامك بواسطة المفتاح F2 قم بتنسيق هذه الاوامر حتى تاخذ الشكل الجمالي المناسب من ناحية البعد عن بعضها والمحاذاه و الخ ---- لاتقم بتنفيذ المشروع ==يتبع الدرس الثالث انشاء الله تقديم بلاغ
بتاريخ: 16 ديسمبر 200619 سنة comment_86272 مجهود جميل اخى نرجو الاستمرار و جزاك الله كل خير تقديم بلاغ
بتاريخ: 16 ديسمبر 200619 سنة كاتب الموضوع comment_86319 الدرس الثالثبسم الله نبداءاين وصلنا نعم ؟؟ 1- اضغط بزر الفارة الايمن على سطح الكنفز ال Main بعد عرضها امامك بواسط المفتاح F2 اختار Data block Wizard اكمل خطوات انشاء بلوك DEPT اختار جميع الحقول وليكن نوع البلوك Form3- مرة اخرى اضغط بزر الفارة الايمن على سطح الكنفز ال Main اختار Data block Wizard اكمل خطوات انشاء بلوك EMP اختار جميع الحقول وليكن نوع البلوك Tabular عدد السجلات خمسة4- لاتنسى انشاء العلاقة Relations بين الجدولين5- هام جدا ؟؟؟؟ قم بأنشاء Text Item في البلوك الاول DEPT وليكن اسمهاDUMMY_ITEM ويجب ان تكون الاولى في الترتيب وخصائصها كالاتي:-Data Type =charMaximum length = 10Database item = no غير مربوطه بالداتا بيسCANVAS = Mainاكتب بجوارها عنوان وليكن مثلا (الرقم ) او(DEPTNO )لماذا – لاننا مستقبلا سوف ننسخ قيمة ال DEPTNO اليها ونتعامل معها على انها DEPTNO بواسطة code وهنا يكمن بداية الاحتراف لاننا سوف نتخلص من رسالة الحفظ بمجرد تنفيذ الخطوات السابقة06- هام جدا ؟؟؟؟ قم بأنشاء Display item في البلوك الاول DEPT وليكن اسمهاREC_STAT ويجب ان تكون الثانية في الترتيب وخصائصها كالاتي:-Data Type =charMaximum length = 7Database item = no غير مربوطه بالداتا بيسسCANVAS = MainVisible = no مخفية عن الانظار غير مرئية – لاتحتاج الى كتابة عنوان لها07- قم باخفاء ال Text item والتي اسمها DEPTNO في البلوك DEPT أي -- Visible = no غير مرئية -- فقط لاتستعجل -- لاتقم بتنفذ المشروع ولاتعمل Compile حفظ المشروع فقط يتبع الدرس الرابع انشاء الله تقديم بلاغ
بتاريخ: 16 ديسمبر 200619 سنة comment_86338 السلام عليكم ورحمة الله وبركاته الف شكر اخي الكريم على هذا المجهود الرائع وان شاء الله تعم الفائدة للجميع من هذه الدروس وشكراً تقديم بلاغ
بتاريخ: 16 ديسمبر 200619 سنة comment_86356 اخى الفاضل جزاك الله عنا خير وجعلة فى ميزان حسناتكواتمنى من الله ان تعم اللفائدة على الجميعلا إلـــــــــــــــه إلا اللـــــــــــــــــــــــــــــــــــه مــــــــحـــــــــــــمــــــد رســــــــــــول اللــــــــــــــــــــــه تقديم بلاغ
بتاريخ: 16 ديسمبر 200619 سنة comment_86358 بعد ازنك ارجو منك ان توضح لى اين اضع triggerwhen-new-item-instance تقديم بلاغ
بتاريخ: 17 ديسمبر 200619 سنة كاتب الموضوع comment_86384 شكرا للاخوة الذين شاركو وايضا للجميع اسأل الله عن يجعل مانقوم به جميعا نهضة للاسلام والمسلمين0و ان يجعله في موزين حسناتنا0اما بالنسبة للاخي الذي يسال ضع Triggers تحت Text Item ال SYS_DATE لماذا ( عندما يقوم النظام يذهب التركيز الى Block Button ايضا لو ضغط المستخدم على مفتاح الادخال يجلب اخر سجل )الدرس الرابعبسم الله نبداءاضغط مفتاح F3 الى شاشة Object Navigator 1- انشي عدد اثنين ALERTS2- الاولى اسمها ERR_ALERT خصائصها كالاتي:-أ- =Title مجموعة مستخدمي اوراكل العربيةب- Alert Style =Cautionت- Button 1 Label = OKث- Button 2 Label = اتركه فارغج- Default Alert Button = Button13- والثانية اسمها CAN_ALERTo = Title مجموعة مستخدمي اوراكل العربية• Alert Style =Stopٍ• Button 1 Label = OK• Button 2 Label = NO • Button 3 Label = اتركه فارغ• Default Alert Button = Button1انتهت الامور البسيطة والمعروفه لدى الجميعالان نأتي الى الصميم كما يقال Triggers على مستوى ال MODULE1- Triggers PRE-FORM اكتب الكود التالي :-الشرح-- اسم الجدول الماستر:global.table_name:='DEPT'; -- اسم الحقل المفتاح الاساسي في الجدول الماستر:global.prmkey_col:='DEPT.DEPTNO'; -- عرض الكنفز الاساسيةshow_view('main');-- متغير نضع به البحث:global.query_val :='';-- متغير النظام نضع به الاوامر:global.option :='';-- متغير نستعملة لابطال مؤقت لبعض الاوامر:GLOBAL.BRN_CD := '01';-- بروسيدر لتفعيل الجدول الاساسي Proceduredisable_ DEPT;-- بروسيدر لتفعيل الاوامر Proceduredefault_button;------------------set_item_property('DEPT.dummy_item',enabled,property_true);set_item_property('DEPT.dummy_item',navigable,property_true);2- Triggers WHEN-NEW-FORM-INSTANCE اكتب الكود التالي :-SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,WINDOW_STATE,MAXIMIZE); set_window_property('window1',window_state,maximize); set_window_property('window1',y_pos ,-20);من الافضل نسخ الكود على المفكرة حتى يتضح اكثر ويكون منسق لاتقم بتنفذ المشروع تقديم بلاغ
بتاريخ: 17 ديسمبر 200619 سنة comment_86412 اشكرك جدا على الإجابة وارجو من الله العفو والعافية فى الدنيا والأخرة و ان يجعل ما تقوم بة فى ميزن حسناتك يوم القيامةاخوك عبدالحميد تقديم بلاغ
بتاريخ: 17 ديسمبر 200619 سنة كاتب الموضوع comment_86458 الدرس الخامسبسم الله نبداءشكرا عبد الحميد اين نحن الان ؟؟؟نحن لازلنا في Triggers على مستوى ال MODULE ولكن قبل ان نكمل ننشي الاجراء التالي :- ( لماذا- حتى لو نسي احد الاخوة وعمل Compile لايظهر خطاء)Procedure من Program UnitsPROCEDURE display_message (in_text IN VARCHAR2) ISBEGINset_alert_property('err_alert',alert_message_text, in_text);:global.alert_code := show_alert('err_alert');END;==في Triggers ON-MESSAGE طبعا على مستوى MODULE ادرج الكود التالي:-if message_code = 40350 then if (:global.fetch_option = 'NEXT') then'); اخر سجل') display_message :global.edge := 'T';elsif (:global.fetch_option = 'PREVIOUS') then');اول سجل') display_message :global.edge := 'T';Else ');السجل المطلوب غير موجود' , set_alert_property('err_alert',alert_message_text) : global.alert_code := show_alert('err_alert');end if ;elsif message_code = 40400 thenif : global.option = 'New' then;(’تم حفظ السجل’) , ,alert_message_text 'err_alert') set_alert_propertyelsif: global.option = ' EDIT' then;(’تم حفظ التعديل’) , ,alert_message_text 'err_alert') set_alert_propertyelsif: global.option = ' DELETE' then;(’تم حذف السجل’) , ,alert_message_text 'err_alert') set_alert_propertyend if ;: global.alert_code := show_alert(' err_alert');elsif message_code = 40352 then');اخر سجل في القائمـــة' , set_alert_property('err_alert',alert_message_text) : global.alert_code := show_alert('err_alert');elsif message_code = 50006 then(' err_alert', alert_message_text,'Enter Numeric values'); set_alert_property: global.alert_code := show_alert('err_alert');end if ;في Triggers ON-ERROR طبعا على مستوى MODULE ادرج الكود التالي:-if error_code = 40401 then');لم تقم بتعديل اي بيانات' , set_alert_property('err_alert',alert_message_text) : global.alert_code := show_alert('err_alert');elsif error_code = 41830 then');لاتوجد بيانات للعرض ' , set_alert_property('err_alert',alert_message_text) : global.alert_code := show_alert('err_alert');end if ;==طبعا الكود احبتي يشرح نفسه ----- يتبع الدرس السادس انشاء الله تقديم بلاغ
بتاريخ: 18 ديسمبر 200619 سنة comment_86499 السلام عليكماخي الكريم مجهود تشكر عليه وجعله الله في ميزان حسناتكوارجو ان تدعم دروسك بالصور لتكتمل المعلومة ويكون طريقة الشرح اقوى وبالتوفيق تقديم بلاغ
بتاريخ: 18 ديسمبر 200619 سنة comment_86516 الحقيقة أريد أن أشكرك بالرغم من أنك وصفة موضوعك بأنه متواضع لكن ربما يكون له فادة كبيرة إذا ماستمريت بهذه الدروس و بشكل متطور تقديم بلاغ
بتاريخ: 18 ديسمبر 200619 سنة كاتب الموضوع comment_86583 الدرس السادسبسم الله نبداءاشكر الجميع و الاخوة الذين شاركو ا اسال الله ان يسدد خطانا 0اين نحن - سبحان الله- نعم تذكر ت ننزل قليا في المشروع نعم المشروع قرب على النهاية عدد ستة اجراءات ووظيفة واحدة فقط وبعض الاكواد البسيطة تحت ازرار الاوامر وينتهي البرنامج – ولكن الصبر – ان الله مع الصابرين00الى Block DEPT في Triggers POST-QUERY طبعا على مستوى Block DEPT ادرج الكود التالي:-copy(name_in(ltrim(rtrim(:global.prmkey_col,''''),'''')),'DEPT.dummy_item');:DEPT.dummy_item := :DEPT.DEPTNO;في Triggers KEY-NEXT-ITEM ل TextItem والتي اسمها DUMMY_ITEM ادرج الكود التالي:-declare ct boolean; beginif :DEPT.dummy_item is null then set_alert_property('err_alert',alert_message_text,:global.prmky_col||' íÌÈ Çä áÇÊßæä ÎÇáíÉ'); :global.alert_code := show_alert('err_alert'); raise form_trigger_failure;elsif :global.option = 'NEW' then ct:=check_dup_val(:global.option); if ct = FALSE then set_alert_property('err_alert',alert_message_text,:global.prmky_col||' ÎØÇÁ Ûí ãÊæÞÚ'); :global.alert_code := show_alert('err_alert'); raise form_trigger_failure; ELSE next_item; end if;elsif :global.option = 'QUERY' then go_block('DEPT'); :global.query_val := :DEPT.dummy_item; set_block_property('DEPT',default_where ,RTRIM(LTRIM(''''||:global.prmkey_col||'''',''''),'''')||' = '||''''|| :global.query_val||'''' ||'OR ' ||''''||:global.query_val||''''||' ='||''''||' '||''''); execute_query(no_validate); if :system.block_status = 'QUERY' then default_button; go_item('BUTTON.new'); else go_item('DEPT.dummy_item'); end if;end if;exception when no_data_found then null;end;احبتي هذا كود البحث -- انسخة على المفكرة لاتعمل Compile للمشروع حتى ينتهيتوجد رسالتين بالعربي في هذا الكود:-الاولى نصها ( يجب ان لاتكون خالية )الثانية نصها ( خطاء غير متوقع )-- ملاحظة --- تعمدت وضع هذا الكود في هذا الدرس حتى تسير الخطوات بالترتيب من اعلى الى الاسفل والمفروض ان يكون في الاخر0يتبع الدرس السابع انشاء الله تقديم بلاغ
بتاريخ: 19 ديسمبر 200619 سنة كاتب الموضوع comment_86698 يتبع الدرس السابع انشاء اللهالدرس السابعبسم الله نبداءنتهينا من Block Dept الحمد للهالان نذهب الى Block Button يوجد في البلوك عدد عشرة Iteme من نوع Bush Button تحت كل واحد وفي Triggers WHEN-BUTTON-PRESSED اكتب الكود الخاص به ويكون الترتيب كلاتي :- الاسم وتحتة الكود ويفصل بينهما –SCROLL_UP go_block('DEPT'); fetch_record('LAST');--UPgo_block('DEPT');:global.edge := '';fetch_record('NEXT');IF (:global.edge = 'T') THEN fetch_record('LAST');END IF;--DOWNgo_block('DEPT');:global.edge := '';fetch_record('PREVIOUS');IF (:global.edge = 'T') THEN fetch_record('FIRST');END IF;--SCROLL_DOWNgo_block('DEPT');fetch_record('FIRST');--QUERY:global.option := 'QUERY';:global.fetch_option := '';set_item_property('button.cancel',enabled,property_true);set_item_property('button.save',enabled,property_false);enable_DEPT;set_item_property('DEPT.dummy_item',enabled,property_true);set_item_property('DEPT.dummy_item',navigable,property_true);set_item_property('DEPT.dummy_item',updateable,property_true);go_block('DEPT');disable_button;disable_navigable;enable_DEPT;clear_block(no_validate);go_item('DEPT.dummy_item');--NEW:global.option := 'NEW';set_item_property('save',enabled,property_true);set_item_property('save',navigable,property_true);set_item_property('save',mouse_navigate,property_true);set_item_property('cancel',enabled,property_true);set_item_property('cancel',navigable,property_true);enable_DEPT;go_block('DEPT');clear_block(no_validate);go_item('DEPT.dummy_item');:dummy_item :='#####';next_item;disable_navigable;disable_button;SET_ITEM_PROPERTY('dummy_item',enabled,property_false);--نكمل في الدرس القادم بحول الله لاتقم بتنفيذ المشروع،،،،يتبع الدر الثامن انشاء الله تقديم بلاغ
بتاريخ: 20 ديسمبر 200619 سنة comment_86838 الشكر لن يوفيك حقك ونسال الله ان يدخلك الجنة ونتمني مزيد من الاستمرار ولا تتوقف عن الشرح ابداوشكرا تقديم بلاغ
بتاريخ: 20 ديسمبر 200619 سنة كاتب الموضوع comment_86844 الدرس الثامنبسم الله نبداءشكرا لجميع الاخوة والمعذرة لقد انشغلت في تركيب الادارة Webutil واشتغلت نوعا ما مع وجود اخطاء 00واعدكم بعدم تكرار ذلك0هذا الدرس تكملة للدرس السابق الاخوة الذين يعملون على Developer10g اضف الاتي تحت :dummy_item :='#####';اضف :-Dept. DEPTNO := 0;--EDITdeclare ct boolean;begin :global.option := 'EDIT'; go_block('block2'); disable_button; disable_navigable; set_item_property('save',enabled,property_true); set_item_property('save',navigable,property_true); set_item_property('save',mouse_navigate,property_true); set_item_property('cancel',enabled,property_true); set_item_property('cancel',navigable,property_true); ct:=check_dup_val(:global.option); if ct = FALSE then نص الرسالة ( خطاء الغي العملية ) set_alert_property('err_alert',alert_message_text,'ÎØÇÁ ÇáÛ ÇáÚãáíÉ'); :global.alert_code := show_alert('err_alert'); go_block('DEPT'); default_button; go_item('BUTTON.edit'); else enable_DEPT; set_item_property('DEPT.dummy_item',enabled,property_false); set_item_property('DEPT.dummy_item',navigable,property_false); go_block('DEPT'); :global.query_val := :DEPT.dummy_item; end if;end;--SAVEdeclare return_stat boolean;begin if :global.option in ('NEW','EDIT') then check_valid(return_stat); if :global.option = 'NEW' and return_stat THEN BEGIN select max(DEPT.DEPTNO )+1 into :DEPT.dummy_item from DEPT; :DEPT.DEPTNO := :DEPT.dummy_item; null; EXCEPTION WHEN no_data_found THEN نص الرسالة( لاتوحد بيانات ) display_message(' áÇÊæÍÏ ÓÌáÇÊ'); end; END IF; IF return_stat = TRUE then go_block('DEPT'); commit_form; IF :global.option = 'NEW' THEN نص الرسالة ( الرقم هو + قيمة dummy_item ) display_message(' ÇáÑÞã åæ '||:DEPT.dummy_item); END IF; default_button ; GO_ITEM('BUTTON.new'); disable_DEPT; SET_ITEM_PROPERTY('DEPT.dummy_item',enabled,property_true); SET_ITEM_PROPERTY('DEPT.dummy_item',navigable,property_true); :global.flag := 'FALSE'; :global.query_val := :DEPT.dummy_item; :DEPT.rec_stat := 'VALID'; execute_query(no_validate); ELSE raise form_trigger_failure; END IF; END IF; :global.option := 'SAVE';END;--CANCELdeclare choice number;begin set_alert_property('can_alert',alert_message_text,'åá ÊÑíÏ ÇáÇáÛÇÁ ');نص الرسالة (هل ترغب الالغاء ) choice := show_alert('can_alert'); if choice = ALERT_BUTTON1 then CLEAR_BLOCK(NO_VALIDATE); :global.option := 'CANCEL'; disable_DEPT; default_button; set_item_property('DEPT.dummy_item',enabled,property_true); set_item_property('DEPT.dummy_item',navigable,property_true); go_block('DEPT'); set_block_property('DEPT',default_where , RTRIM(LTRIM(''''||:global.prmkey_col||'''',''''),'''')||' = '||''''|| :global.query_val||'''' ||'OR ' ||''''||:global.query_val||''''||' ='||''''||' '||''''); execute_query(no_validate); set_item_property('BUTTON.cancel',enabled,property_false); go_item('BUTTON.EDIT'); else if :global.option = 'NEW' then go_item('DEPT.dummy_item'); elsif :global.option = 'EDIT' then go_block('DEPT'); elsif :global.option = 'QUERY' then go_item('DEPT.dummy_item'); end if; end if;end;--EXITexit_form;نكمل في الدرس القادم انشاء الله لاتقم بتنفيذ المشروعيتبع الدرس التاسع ان شاء الله تقديم بلاغ
بتاريخ: 21 ديسمبر 200619 سنة كاتب الموضوع comment_86964 الدرس التاسعبسم الله نبداءالان احبتي بقي فقط الاجراءات والوظيفة فقط ونتهي المشروع قم بانشاء ال PROCEDURE كالتالي :-PROCEDURE check_valid(return_stat out boolean) IS ct boolean;BEGIN return_stat:=true;if return_stat = true then if :DEPT.dummy_item is null then set_alert_property('err_alert',alert_message_text,' íÌÈ Çä áÇÊßæä ÎÇáíÉ'); :global.alert_code := show_alert('err_alert'); go_item('DEPT.dummy_item'); return_stat := false; elsif 'check condition'='' then set_alert_property('err_alert',alert_message_text,'ÎØÇÁ ÛíÑ ãÊæÞÚ'); :global.alert_code := show_alert('err_alert'); go_item('DEPT.DNAME'); return_stat := false; end if;end if;end;--قم بانشاء ال PROCEDURE التالي :-PROCEDURE default_button ISBEGIN set_item_property('scroll_up',enabled,property_true); set_item_property('up',enabled,property_true); set_item_property('down',enabled,property_true); set_item_property('scroll_down',enabled,property_true); set_item_property('query',enabled,property_true); set_item_property('print',enabled,property_true); if (:global.brn_cd = '01') then set_item_property('new',enabled,property_true); set_item_property('edit',enabled,property_true); set_item_property('delete',enabled,property_true); set_item_property('save',enabled,property_false); else set_item_property('new',enabled,property_false); set_item_property('edit',enabled,property_false); set_item_property('delete',enabled,property_false); set_item_property('save',enabled,property_false); end if; set_item_property('cancel',enabled,property_false); set_item_property('exit',enabled,property_true);END;--قم بانشاء ال PROCEDURE التالي :-PROCEDURE disable_button ISBEGIN set_item_property('new',enabled,property_false); set_item_property('edit',enabled,property_false); set_item_property('delete',enabled,property_false); set_item_property('exit',enabled,property_false);END;انتهى الدرس وسوف نكمل في الدرس القادم انشاء الله ( حتى لاتطول الكتابة)يتبع الدرس العاشر تقديم بلاغ
بتاريخ: 22 ديسمبر 200619 سنة comment_87057 شكراً جزيلا على هذا المجهود الرائع ونترقب المزيد .................. تقديم بلاغ
بتاريخ: 22 ديسمبر 200619 سنة كاتب الموضوع comment_87151 الدرس العاشربسم الله نبداءقم بانشاء ال PROCEDURE كالتالي :- مع مراعات التعليق الموجود داخل الكود ولك الخيار 0PROCEDURE enable_DEPT ISBEGIN SET_block_PROPERTY('DEPT',update_allowed,property_true); SET_block_PROPERTY('DEPT',update_allowed,property_true); SET_block_PROPERTY('EMP',insert_allowed,property_true); SET_block_PROPERTY('EMP',insert_allowed,property_true);OR –-- to enable all text item that have been disaple you must write all text item that apper in main canvas without dummy item--$$ set_item_property('',enabled,property_true); set_item_property('',navigable,property_true); set_item_property('',updateable,property_true);END;--قم بانشاء ال PROCEDURE كالتالي :- مع مراعات التعليق الموجود داخل الكود ولك الخيار 0PROCEDURE disable_DEPT ISBEGIN SET_block_PROPERTY('DEPT',update_allowed,property_false); SET_block_PROPERTY('DEPT',insert_allowed,property_false); SET_block_PROPERTY('EMP',update_allowed,property_false); SET_block_PROPERTY('EMP',insert_allowed,property_false); OR – -- for pervent the user to write in text item you must write all text item that apper in main canvas without dummy item --$$ set_item_property('',enabled,property_false);END;يتبع الدرس الحادي عشر بحول الله وقوتة،،،،،، تقديم بلاغ
بتاريخ: 24 ديسمبر 200619 سنة كاتب الموضوع comment_87557 الدرس الحادي عشر والاخير 000اين وصلنا ايه الاحبة بقي عدد اثنين اجراء والوظيفة فقط0قم بانشاء ال PROCEDURE كالتالي:-PROCEDURE disable_navigable ISBEGIN set_item_property('scroll_up',enabled,property_false); set_item_property('up',enabled,property_false); set_item_property('down',enabled,property_false); set_item_property('scroll_down',enabled,property_false); set_item_property('query',enabled,property_false); set_item_property('print',enabled,property_false);END;قم بانشاء ال PROCEDURE كالتالي:-PROCEDURE fetch_record(fetch_option in VARCHAR2) IS old_itm_cd VARCHAR2(15) := :DEPT.dummy_item; where_str varchar2(500) := ''; Q varchar2(2) := '''';BEGIN:global.fetch_option:= fetch_option;if fetch_option = 'FIRST' then where_str := rtrim(ltrim(:global.prmkey_col,Q),Q)||' ='||' (select min('||rtrim(ltrim(:global.prmkey_col,Q),Q)||')from '|| rtrim(ltrim(:global.table_name,Q),Q)||')';elsif fetch_option = 'PREVIOUS' then where_str := rtrim(ltrim(:global.prmkey_col,Q),Q)||'= (select max( '|| rtrim(ltrim(:global.prmkey_col,Q),Q)||' ) from ' ||rtrim(ltrim(:global.table_name,Q),Q)||' where ' ||rtrim(ltrim(:global.prmkey_col,Q),Q)||' < ' || Q || old_itm_cd || Q || ' )';elsif fetch_option = 'NEXT' then where_str := rtrim(ltrim(:global.prmkey_col,Q),Q)||'= (select min( '|| rtrim(ltrim(:global.prmkey_col,Q),Q)||' ) from ' ||rtrim(ltrim(:global.table_name,Q),Q)||' where ' || rtrim(ltrim(:global.prmkey_col,Q),Q)||' > ' || Q || old_itm_cd || Q || ' )';elsif fetch_option = 'LAST' then where_str := rtrim(ltrim(:global.prmkey_col,Q),Q)||' ='||' (select max('||rtrim(ltrim(:global.prmkey_col,Q),Q)||' )from '|| rtrim(ltrim(:global.table_name,Q),Q)||')';end if;set_block_property ( 'DEPT', default_where, where_str);clear_block(no_validate);execute_query(no_validate);if (:DEPT.dummy_item = old_itm_cd) THEN if fetch_option in ('FIRST', 'PREVIOUS') thenنص الرسالة ( اول سجل ) display_message('Ãæá ÓÜÜÌÜÜá'); elseنص الرسالة ( آخر سجل ) display_message('ÂÎÜÜÑ ÓÜÜÌÜÜÜá'); end if;end if;END;ملاحظة ( هذا كود عرض السجلات – الاول – التالي – السابق – الاخير )قم بانشاء ال function كالتالي:- مع قراءة التعليق الذي داخل الكود000function check_dup_val(opt in VARCHAR2) return boolean is del VARCHAR2(1); x boolean;BEGIN -- please write table name ,primary key column and delete column in real palce --$$ select del_status into del from where = :DEPT.dummy_item; if sql%found and nvl(del,' ') = ' ' then if opt = 'NEW' then x := FALSE; else x := TRUE; end if; elsif sql%found and del = 'Y' then x := FALSE; end if; return x; RETURN NULL; exception when no_data_found then if opt = 'NEW' then x := TRUE; else x := FALSE; end if; return x;END;الحمد لله وبهذا انتهت الدروس المتواضعة اسال الله ان يجعل العمل خالص لوجهه تعالىوان ينفع به الاسلام والمسلمين والسلام عليكم ورحمة الله وبركاتة ،،،،،، تقديم بلاغ
بتاريخ: 25 ديسمبر 200619 سنة comment_87660 مشكوووور جدا أخي وجزاك الله خيرابس ممكن شوية شرح للكود عشان يبقي مفهوم تقديم بلاغ
بتاريخ: 25 ديسمبر 200619 سنة كاتب الموضوع comment_87701 اخي / POORالسلام عليكم ورحمة الله وبركاتة :-بالنسبة لاستفسارك حول شرح الكود فأعتقد لو شرحت كل جملة في الكود فان المسأله تطول - والا انت ايش رأيك - وايش راي اعضاء المنتدى0ولكن انت اتبع الاتياتبع الخطوات كامله بالدقة وانسخ الاكواد ثم نفذ المشروع وستجد امامك مشروع متكاملاقراء الكود واذا صدفت جملة غير مفهومة اواجراء غير مفهموم -- فانا مستعد بشرحه بالتفصيللتعم الفائدة0 كما اود الاحاطة انني حاولت ارفاق ال FORM.FMB ولكن لم افلح حيث ليست لدية الاصلاحية كما هو معروف0بالتوفيق ،،، تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.