Download as pdf or txt
Download as pdf or txt
You are on page 1of 45

‫ﺗﻢ ﺗﺤﻤﻴﻞ اﻟﻤﻠﻒ ﻣﻦ ﻣﻮﻗﻊ‬

‫اﻟﺒﻮﺻﻠﺔ اﻟﺘﻘﻨﻴﺔ‬
‫‪www.boosla.com‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪Forms 10g‬‬
‫مراحل تصميم برنامج‬
‫‪ -1‬تحليل النظام ‪Analysis‬‬
‫‪ -2‬التصميم ‪Design‬‬
‫‪ -3‬البرمجة ‪Programming‬‬
‫‪ -4‬اإلختبار ‪Test‬‬
‫__________________________________________‬
‫البــلـــوك‬
‫يتم التعامل مع الجداول من خالل الـ ‪ Block‬ويتم حفظھا بامتداد ‪* .fmb‬‬
‫وتنقسم البلوكات إلى ‪-:‬‬
‫‪Data Base Block‬‬ ‫مقامة على جدول ) جداول ( موجودة بقاعدة البيانات‬
‫مقامة على جدول ) جداول ( غير موجودة بقاعدة البيانات ‪on- Data Base Block‬‬
‫مالحظات ھامة ‪:‬‬
‫يمكن إنشاء الـ ‪ Block‬إما ‪Manual , Wizard‬‬
‫إنشاء الـ ‪ Block‬على الـ ‪Table / View‬‬
‫ممكن أن انشأ ‪ Block‬على ‪ User‬أخر ) حتى لو لم يوجد ‪( Privilege‬‬
‫عند اختيار أعمدة ال بد أن اخذ جميع األعمدة الـ ‪Nnull‬‬
‫األعمدة التى ال يتم اختيارھا ھى التى يمكن أن يدخل فيھا الـ ‪Null‬‬
‫يفضل أن اخذ جميع األعمدة فى الـ ‪ Block‬الن الذى يظھر معى ھو الـ ‪Layout‬‬
‫يفضل عند إنشاء الـ ‪ Block‬أن ننشط االختيار ‪Enforced data integrity‬‬
‫كيفية إنشاء الـ ‪Block‬‬
‫نقف على الـ ‪ data block‬ثم نضغط على الرمز ) ‪ ( +‬وھو يعنى اإلنشاء فتظھر شاشة الـ‪Welcome‬‬
‫فنضغط على زر ‪ Next‬ثم نقوم باختيار ‪ Table / View‬المراد عمل ‪ Block‬علية‬
‫ثم ننشط االختيار‪ Enforced data integrity‬فيظھر مربع حوار ‪ Connect‬فيتم اختيار الـ ‪User‬‬
‫ثم نقوم بالضغط على ‪ Browse‬فنقوك باختيار الجدول المراد عمل ‪ Block‬لة ثم نقوم باختيار األعمدة‬
‫ثم نضغط ‪ Next‬فنقوم بتسمية الـ ‪ Block‬ثم ‪ Next‬ثم ‪Finish‬‬
‫ثم ندخل على الـ ‪ Layout Wizard‬ثم ‪ Next‬ثم يعرض ‪Available item , Displayed item‬‬
‫فيتم اختيارھم جميعا ) ھو األفضل ( ثم ‪ Next‬ثم نختار ‪ Form‬ثم يظھر مربع حوار ‪Frame Title‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫عند إدخال الباسوورد واسم المستخدم يتم فتح قائمة باسم الجداول المتاحة لإلختيار منھا ‪ .‬فنقوم بإختيار الجدول المطلوب‬
‫وتحديد الحقول المطلوبة ولتكن كل الحقول والضغط علي ‪. next‬‬

‫ملحوظات ھامة‬
‫إلخفاء عمود ‪:‬‬
‫‪-1‬ال اختار ھذا العمود او‬
‫‪-2‬اختارة ويكون الـ ‪canvas = Null‬‬

‫ملحوظة ھامة جدا ‪:‬‬


‫ال نحفظ الـ ‪ Form‬فى مجلد يحتوى على عالمات خاصة ا‪ ,‬مسافة‬
‫الحظ أن ‪ :‬عند حذف الـ ‪ Form‬يتبقى الـ ‪Frame‬‬
‫الـ ‪ Form‬موجود على ‪Canvas‬‬
‫المـفـتـــــاح‬ ‫المعــنــــى‬
‫‪F3‬‬ ‫‪Object navigator‬‬
‫‪F4‬‬ ‫‪ ) Property Palette‬الخصائص (‬
‫‪F2‬‬ ‫) ‪Design (Canvas‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫الخصائص العامة للعنصر‬

‫بالضغط علي ‪ F4‬يتم الدخول الي القائمة التالية‬


‫اسم العنصر البرمجي‬

‫نوع العنصر‬

‫خاصية الجافــــا‬
‫تعليقات‬

‫محاذاة يمين ‪ -‬يسار‬

‫خاصية الجافــــا‬

‫اكتر من سطر‬

‫حماية مثل وضع رمز مكان الحرف‬

‫حفظ موقع الماوس‬


‫يرجع علي اخر حرف‪Yes‬‬
‫يرجع علي اخر كلمة ‪No‬‬

‫عند الضغط علية تظھر قائمة‬

‫السماح إلستخدام لوحة المفاتيح‬

‫العنصر اللي ھيروحلة واللي ھيرجعلة‬

‫اجباري ادخال البيانات‬


‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫خاصة بالتاريخ‬

‫اقل واقص قيمة يقبلھا‬

‫التأكد من ان العنصر في الفورم تبع النظام وال عنصر خارجي‬

‫ال يصلح إلدخال البيانات‬

‫نتركھا بصفر‬

‫حساسية الحرف‬

‫إلظھار الحقول اللي بياناتھا كثيرة ‪Ctrl+e‬‬


‫إلظھار ‪editor‬البد من انشاءة اوال‬

‫االسم اللي ھيظھر علي الفورم ‪caption‬‬


‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫ظھور ملحوظة عند الوقوف علي العنصر‬

‫ظھور ملحوظة علي الماوس‬

‫‪Master Detail Block‬‬


‫‪-1‬إلنشاء ھذا النوع نبنى الـ ‪ Master Block‬أوال ) ‪(Dept Block‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪-2‬من داخل نفس الـ ‪ Module‬نقف على الـ ‪ Data Block‬وننشى الـ ‪(Emp Block) Detail Block‬‬
‫وھو يزيد صفحة عن الـ ‪ Master‬وھى صفحة العالقة‬
‫‪Detail block . foreign key column = Master block . foreign key column‬‬
‫مع مالحظة انة يتم وضع الـ ‪ Master Block‬أوال ) معاة العالقة (‬
‫ويكون الـ ‪ Detail‬من النوع ‪Tabular‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫ونضع العالقة بين الجدولين الرئيسي ‪Dept‬و الفرعي ‪Emp‬‬


‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫ونختار اكثر من ‪Record Display‬اكبر من ‪ 1‬وليكن ‪ 7‬ويكون الناتج النھائي‬

‫ملحوظة ھامة‬
‫المستر البد ان يكون فوق ال ‪Detail‬وذلك في قائمة ال‬
‫‪ object navigator‬وللوصول لھا من خالل الضغط علي ‪F3‬‬

‫ملحوظة ھامة‬

‫يظھر عمود ال ‪ Dept‬في الناتج النھائي مكرر وإلخفائة نقوم بعمل ال ‪ Canvas‬لة ب ‪ ull‬او نجعل‬
‫‪ Visible‬ب ‪. o‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫ملحوظة ھامة‬

‫‪trigger‬‬ ‫‪Trigger‬اتوماتيكي‪xxxxx‬ا وال‬ ‫‪ -‬العالق‪xxxxx‬ة دائم‪xxxxx‬ا تك‪xxxxx‬ون م‪xxxxx‬ع الماس‪xxxxx‬تر فعن‪xxxxx‬د عمل‪xxxxx‬ة ي‪xxxxx‬تم انش‪xxxxx‬اء‬
‫يكون مسئون من تحقق البيانات مثل عدم ادخال موظف في غير ادارتة ‪.‬‬
‫‪ -‬الحظ أن العالقة تكون مع الـ ‪ Master Block‬وللدخول على خصائص العالقة نقف عليھا ونضغط ‪F4‬‬
‫المعنى‬ ‫الخاصية‬
‫ال يحذف الـ ‪ Parent‬لوجود ‪Child‬‬ ‫‪Non-isolated‬‬
‫يمسح الـ ‪ Parent‬ويضع ‪ Null‬فى ‪child‬‬ ‫‪Isolated‬‬
‫يحذف الـ ‪ Parent‬وكذلك الـ‪Child‬‬ ‫‪Cascade‬‬
‫‪ -‬خاصية الـ ‪ Prevent Master‬إذا كانت قيمتھا ‪ Yes‬فھى تعنى منع الكتابة فى الـ ‪ Detail‬إال‬
‫عند الكتابة فى الـ ‪ Master‬أوال‬
‫‪ -‬خاصية اإلستعالم ‪Coordination‬‬
‫خاصية الـ ‪Coordination‬‬
‫‪Defered‬‬ ‫‪Automatic‬‬ ‫المعنى‬
‫‪no‬‬ ‫‪no‬‬ ‫االفتراضى‬
‫‪yes‬‬ ‫‪no‬‬ ‫يعرض بيانات الـ ‪ Master‬فقط‬
‫‪no‬‬ ‫‪yes‬‬ ‫غير محققة‬
‫‪yes‬‬ ‫‪yes‬‬ ‫يظھر الـ ‪ Master‬وإلظھار الـ‪ Detail‬ال بد من الضغط علية‬

‫‪Items‬‬
‫يمكن الكتابة بداخلة ‪ Text Item‬بينما الـ ‪ Display Item‬ال أستطيع الكتابة بداخلة‬

‫الخاصية‬ ‫القيمة‬
‫‪name‬‬ ‫االسم البرمجى‬
‫‪Item type‬‬ ‫نوع العنصر ويمكن من خاللھا تغيير النوع‬
‫‪Functional‬‬
‫‪enable‬‬ ‫‪ Yes‬وتعنى إمكانية الكتابة بداخلة‬
‫‪Justification‬‬ ‫المحاذاة‬
‫‪Multi line‬‬ ‫القيمة ‪ Yes‬تعنى إمكانية كتابة اكثر من سطروالعكس صحيح بالنسبة لـ‪No‬‬

‫‪Warp style‬‬ ‫ينھى السطر على كلمة ‪Word‬‬


‫ينھى السطر على حرف ‪char‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫الخاصية‬ ‫القيمة‬
‫‪Case restriction‬‬ ‫افضل اختيار ھو ‪ mixed‬وتعنى الكتابة بنفس‬
‫حالة األحرف التى يتم الكتابة بھا‬
‫‪Conceal Data‬‬ ‫يجعل الكتابة * وفى ھذة الحالة يكون ‪Multilane = no‬‬

‫‪Keep cursor position‬‬ ‫تستخدم فى حالة االنتقال بين اكثر من ‪ Text _item‬فالقيمة ‪ Yes‬تعنى‬
‫عند الرجوع للعنصر السابق‬
‫يرجع ألخر حرف بينما القيمة ‪ No‬تعنى عند الرجوع للعنصر السابق يرجع‬
‫على كل الكلمة‬
‫‪Automatic skip‬‬ ‫تعنى عند الوصول للنھاية ) أخر الـ‪(Length‬‬
‫ينتقل للعنصر الثانى وذلك إذا كانت القيمة ‪Yes‬‬
‫‪Max length‬‬ ‫يتم كتابة رقم بھا‬
‫‪Object navigator‬‬
‫االنتقال لألمام‬
‫‪Tap‬‬
‫‪Shift Tap‬‬ ‫الرجوع للخلف‬
‫‪Keyboard navigation‬‬ ‫‪ Yes‬وتعنى إمكانية استخدام لوحة المفاتيح‬
‫والقيمة‪ No‬تعنى استخدام الماوس‬
‫‪Initial Value‬‬ ‫القيمة التى تظھر فى العنصر المختار عند بداية ظھور الـ‪Form‬‬

‫‪Format mask‬‬ ‫التنسيق التى سيتم العرض بة‬


‫‪Lowest allowed / Max value‬‬ ‫ونكتب ‪ range‬معين وذلك فى حالة الـ‪Insert‬‬
‫‪Tool tip‬‬ ‫وتعنى ظھور تعليق معين عند الوقوف‬
‫بالماوس على ھذا العنصر‬
‫‪Display automatic hint‬‬ ‫نجعلة ‪ yes‬وذلك إذا أردنا ظھور التعليق‬
‫‪Data Base‬‬
‫‪Data base item‬‬ ‫ھامة جدا فإذا كانت القيمة ‪ No‬فان جميع الخواص أسفلھا ال قيمة لھا‬
‫‪Update only if null‬‬ ‫ال يقبل التحديث إال إذا كانت قيمة الخلية فارغة‬
‫‪Query only‬‬ ‫إذا كانت القيمة ‪ yes‬فتعنى أنة لن يقبل اى خاصية غير االستعالم فى‬
‫حالة الـ‪ run time‬كما أنھا تجعل جميع الخواص أسفلھا ال قيمة لھا‬

‫‪Physical‬‬
‫‪Visible‬‬ ‫القيمة ‪ yes‬تعنى رؤية العنصر فى الـ‪run time‬‬
‫‪Bevel‬‬ ‫شكل العنصر نفسة‬
‫‪Editor‬‬
‫‪Editor‬‬ ‫تعنى إمكانية كتابة اكثر من سطر‬
‫فى العنصر وذلك فى حالة الـ‪run time‬‬
‫‪Title‬‬ ‫عنوان الـ‪Editor‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫الخاصية‬ ‫القيمة‬
‫‪Visual attribute‬‬ ‫مجموعة خواص تم إنشائھا مسبقا‬
‫يتم إعطائھا للـ ‪Editor‬‬
‫‪Help‬‬
‫‪Hint‬‬ ‫ما يظھر على الـ‪ conceal bar‬عند الوقوف بالعنصر‬
‫‪Record‬‬
‫‪Current record‬‬ ‫تستخدم لشد انتباه المستخدم ومعرفة مكان المؤشر‬
‫‪Distance between record‬‬ ‫خاصة بھذا العنصر‬
‫‪umber of item displayed‬‬ ‫ال يصح أن يكون عدد العناصر الموجودة بالـ‪Block‬‬
‫أن يكون اكبر من الـ‪Record‬‬
‫‪Visual Attribute‬‬
‫‪Prompt visual‬‬ ‫االسم الذى يظھر بجانب العنصر ويمكن التحكم‬
‫فية عن طريق ‪Prompot_prompot‬‬

‫ملحوظة ھامة‬

‫الـ ‪ Item‬على ‪ block‬والـ ‪ Block‬على ‪ Canvas‬والـ ‪ Canvas‬على ‪Window‬‬

‫• لعرض التاريخ الحالى فى عنصر عند عرض الـ‪ Form‬فى الـ ‪Run time‬‬
‫نجعل خاصية الـ ‪ Initial value‬للعنصر نكتب فيھا ‪$$datetime $$ , $$date$$‬‬
‫• إلظھار الـ ‪ Editor‬فى الـ ‪run time‬‬
‫نقف فى العنصر ثم نضغط من لوحة المفاتيح ‪ , Ctr + e‬نختار من قائمة ‪Edit / Editor‬‬
‫مع مالحظة إذا وقفت فى اى عنصر ليس له خاصية الـ ‪ Editor‬فأنة يكتب حسب الحجم المحدد له‬

‫مثال على استخدام الـ ‪: Editor‬‬


‫بفرض أننا نريد االستعالم عن الموظفين المعينين فى شھر معين‬
‫‪ .1‬نأتي على العنصر الخاص بتاريخ التعيين ثم نكتب مثال ‪:n‬‬
‫‪ .2‬نضغط زر ‪ Execute‬فيظھر مربع نكتب فية جملة االستعالم بدون ‪where‬‬
‫)’‪hdate like upper (‘%sep‬‬
‫• ما يتم فتحة قبل ما نفتح الـ‪ Form‬تسمى ) ‪SGA ( System Global Area‬‬
‫• قبل اى جملة ) ‪ Update ( insert / update / delete‬تنزل القيم فى الـ ‪ re do buffer‬أوال‬
‫وعند الـ ‪ Commit‬تنزل فى الجدول‬
‫ملحوظة ھامة‬

‫فى جمل الـ ‪ Update‬يتم البحث على الـ ‪ DB item‬ويتم عمل تحديث لھا فقط دون غيرھا‬
‫‪3 Tier‬‬
‫‪Client Tier .1‬‬
‫‪Middle Tier ( Web Server - Forms Services ) .2‬‬
‫‪Data Base .3‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪Web server OC4J : Oracle 4 Java‬‬


‫ھى التى تقوم بإنشاء الـ ‪ Java applet‬وھى التى تعمل اتصال ما بين الـ ‪Forms , Data Base‬‬

‫يدخل فى الـ ‪ browser‬مرة واحدة ويقوم بإنشاء ملف الـ‪ HTML‬مرة واحدة فقط ‪Jinitiator‬‬
‫‪Forms services :‬‬
‫‪Forms servelets‬‬ ‫خاصة بالـ‪Form‬‬
‫‪Forms Listener Services‬‬ ‫تعطى الـ ‪ Parameter‬للعنصر التالى‬
‫‪Forms runtime engine‬‬ ‫يعدل فى الـ‪DB‬‬
‫ملحوظة ھامة‬

‫يحتوى الـ ‪ URL‬على الـ ‪Parameter‬‬


‫ملحوظة ھامة‬
‫مسار تشغيل الفورم‬
‫‪Http://hostname:port (8889/8888/form90/f90‬‬
‫‪In 10g‬‬ ‫‪In 9i‬‬

‫‪ -‬لعمل ‪Master Detail‬علي ‪Tap Page‬‬

‫ويكون الناتج‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫إلظھار التاب افقيا نقوم بتغيير الخاصية التالية ‪Right‬‬

‫‪ -‬لجعل صف معين يأخذ شكل جمالي نقوم بعمل إنشاء ‪Visual Attributes‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫وبالدخول علي خصائصھا عن طريق ‪F4‬‬

‫ويكون الناتج علي اي عمود وذلك بإختيار العمود والدخول الي خصائصة واختيار ‪Visual Attribute‬‬
‫واختيار الخصائص السابق اعدادھا ليكون الناتج كما يلي‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪LOV: List of Value‬‬

‫عند ادخال بيانات مثل نوع اإلشارة واسمھا والتخزين بالرقم مثل ‪Dept no‬‬
‫‪ -‬نقوم بإضافة ‪Display item‬‬
‫‪ -‬نقوم بإنشاء ‪Lov‬‬
‫وتنقسم الي نوعين‬
‫‪Import query‬‬ ‫‪-‬‬
‫‪Build Wizard‬‬ ‫‪-‬‬

‫ھى قائمة مساعدة تحتوى على قيم يتم اختيار أحدھا بدال من كتابتھا‬ ‫•‬
‫تظھر الـ‪ LOV‬عند الضغط على ‪ Ctr + L‬والمؤشر داخل العنصر صاحب الـ ‪LOV‬‬ ‫•‬
‫من قائمة ‪ display lov‬إذا كان المؤشر داخل العنصر صاحب الـ‪ Lov‬فأنة يظھر ما‬ ‫•‬
‫يفيد بذلك على الـ‪Consol‬‬
‫تقوم الـ ‪ Lov‬على ‪ record group‬عبارة عن صورة من جدول قاعدة البيانات‬ ‫•‬

‫كيفية عمل ‪LOV‬‬


‫بفرض أننا أردنا عمل ‪ Lov‬وذلك لعنصر الـ ‪ ) Deptno‬الموجود بجدول الـ ‪( Emp‬‬
‫وذلك عند الوقوف برقم اإلدارة تظھر قائمة بأسماء وأرقام اإلدارات فنختار ما يناسبنا‬
‫‪ -1‬نقوم أوال بإنشاء ‪ Block‬لجدول الـ ‪ Emp‬مع مالحظة أننا‬
‫سنضع بجوار الـ ‪ display item deptno item‬ونسمية ‪ emp_di‬وذلك الستقبال الـ ‪Lov‬‬

‫‪ -2‬نقف على ‪ Lov node‬وننشئ واحدة جديدة ونختار الـ ‪ Wizard‬ثم ‪next‬‬
‫فتظھر شاشة نكتب بھا جملة االستعالم‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫أو كتابة جملة ‪ SQL‬التالية‬


‫‪Select dname , deptno from emp where deptno :=deptno‬‬
‫مع مالحظة أننا كتبنا العمود األول من النوع ‪ Char‬وھو الـ ‪ dname‬وھو األفضل وذلك الستخدامة فى البحث‬
‫وللتأكد من صحة االستعالم نضغط زر ‪ Check _syntax‬ثم نضغط ‪next‬‬
‫فتظھر شاشة مقسمة لجزئين ‪Record group column , Lov column‬‬
‫فنختار ما نريد ظھورة فى الـ ‪ Lov Column‬وذلك من الـ ‪Record column‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫ثم نضغط ‪ next‬فيظھر مربع حوار فنقف فى الـ ‪Return Value‬‬

‫فنقوم بتنشيط االختيار ‪Automatically Size Column‬‬


‫وذلك إذا حدث اى تعديل فى حجم العمود بقاعدة البيانات يعدل فى الـ ‪Lov‬‬
‫ثم نقوم بالضغط على ‪ Look up return item‬وذلك لكى نختار العنصر التى ستعود علية القيم‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫وقى ھذا المثال ھو ‪ emp_di‬ثم تضغط ‪ ok‬تم ‪ next‬فيظھر مربع حوار نكتب فية الـ ‪Title‬‬
‫ثم ‪ next‬فيظھر مربع حوار يفضل تركة للـ ‪ Server‬ثم ‪next‬‬
‫فتظھر شاشة مقسمة لجزئين ‪Return item , Assigned item‬‬
‫فنختار ما نريد ظھورة فى الـ ‪ Assigned item‬وذلك من الـ ‪ Return item‬ثم ‪ next‬ثم نضغط ‪Finish‬‬

‫الحظ أن ‪ :‬قد تم إنشاء كال من ‪ lovs , record group‬فنقوم بتغير أسمائھم وليكن ‪dept , dept‬‬

‫وبالدخول علي خصائص ال ‪ LOV‬نفسھا ندخل ونعدل القيم التالية‬

‫ملحوظة ھامة ‪ :‬لو تم عمل ‪ Run‬للـ ‪ Form‬فان الـ ‪ Lov‬لن تعمل‬


‫ألنة البد من إعطاء الـ ‪ deptno item‬الخاص بالبلوك ھذة الخصائص‬
‫)‪List of Values (LOV‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫)‪List of values: lov_name (dept‬‬


‫‪Validate from list : yes‬‬

‫ملحوظة ھامة ‪ :‬جملة الـ ‪ Select‬تقوم بتعبئة الـ ‪Record group‬‬


‫إلظھار الـ ‪ Lov‬فى الـ ‪: Run time‬‬
‫نقف على العنصر صاحب الـ ‪ Lov‬ثم نضغط ‪ Ctr+ l‬فتظھر الـ ‪ Lov‬فنختار منھا ما نريد‬

‫‪Create calculation item‬‬


‫يتم إنشاء بلوك على جدول الـ ‪ Emp‬والحظ أن نوعة ‪ tabular‬وليكن الـ ‪record display = 5‬‬
‫ثم يتم وضع عدد ‪ 2 Dispaly item‬أحدھم يكون عدده يساوى عدد الـ ‪Record‬‬
‫وھو الذى سيتم فية حساب ‪ .sal + comm‬لكل موظف على حدى‬
‫أما العنصر األخر يستخدم لحساب إجمالي المرتبات ) يفضل أن يكون ‪( display item‬‬

‫‪ -‬بعد عمل بلوك جديد نضع علية ‪Display Utem 2‬فيتم انشائھم تلقائيا بعدد اليجالت الموجودة ولتكن ‪5‬‬
‫بالنسبة لل ‪display‬التي ستقوم بجمع ال ‪COMM+ SAL‬فنتركھا بعدد السجالت ام بالنسبة لل‬
‫‪Display‬التي سيتم فيھا جمع ال ‪ SAL‬فنغير في خصائصا كما بالصورة التالية‬

‫يجب تعديل الخاصية كما بالشكل‬

‫ونقوم بتسمية ال ‪ Display‬الخاص بجمع المرتب والحوافز ب ‪Total‬والثاني الخاص بجمع المرتب ‪Sum‬‬
‫وتكون الصورة النھائية للفورم كما بلشكل التالي‬
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

Total ‫بالنسبة للعنصر‬Calculation ‫للتعديل في خصائص ال‬

Total ‫خواص العنصر األول‬


‫الخاصية‬ ‫القيمة‬
Data type Number
calculation
Calculation mode formula
Formula Nvl (:sal,0) + Nvl (:comm,0)

‫ھاااااااااام‬

Sum ‫خواص العنصر الثانى‬


‫الخاصية‬ ‫القيمة‬
Calculation mode summary
Formula ‫كما ھى‬
Summary function sum
Summarized block emp
Summarized item sal
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪ -‬مع مالحظة أن العنصرين الخاصية ‪Data base item = no‬‬


‫‪ -‬ثم ندخل على خصائص البلوك وذلك بان نقف علية ثم نضغط ‪ F4‬ونغير الخاصية‬
‫) ‪Record ( query all record = yes‬‬

‫لضمان عدم كتابة نفس الصنف اكثر من مرة بالفاتورة الواحدة‬

‫خصائصة ‪ detail_id -:‬نجعل رقم الفاتورة‬


‫‪primary key = no , required = no‬‬

‫ثم نجعل رقم الصنف ‪ item_id‬ھو الـ ‪primary key‬‬


‫وذلك فى الـ ‪ Forma‬وليس الـ ‪Data Base‬‬

‫ملحوظة ھامة‬
‫‪ -‬لو اردنا كتابة تعليق داخل الكود وال يتم التعامل معة علي انة كود يتم وضع قبل السطر –‬
‫‪ -‬ولو كان الكالم اكتر من سطر نضع قبل بداية الكالم ‪ */‬وفي نھايتة ‪*/‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫إلدخال موظف مرتبة بين ‪ 3000‬إلي ‪ 5000‬او اكبر من ‪2500‬‬


‫نقوم بالدخول علي ‪Enter Query Mode‬وندخل علي الحقل الخاص بالشرط ‪Sal‬ونضع‬
‫الكود بدون جملة ‪where‬‬
‫‪Sal >=250‬‬
‫‪Sal between 3000 and 5000‬‬

‫‪Check Box‬‬

‫الخاصية‬ ‫القيمة‬
‫‪Functional‬‬
‫‪label‬‬ ‫ما يظھر بجوار العنصر‬
‫‪Access Key‬‬ ‫حرف عند الضغط عليه مع ‪ alt‬نصل للعنصر‬
‫‪Implementation class‬‬ ‫خاصة بالـ ‪Java‬‬
‫‪Value when checked‬‬ ‫اى قيمة وتعنى عند دخول ھذة القيمة بقاعدة البيانات يكون العنصر نشط‬
‫)‪Value when checked (1‬‬
‫)‪Value when checked (0‬‬
‫‪Check box mapping of‬‬ ‫تعنى عند إدخال قيم غير الـ ‪when check / un check‬‬
‫‪Other values‬‬ ‫يعاملھا على أنھا ‪check / uncheck‬ال ‪default‬‬
‫‪Data‬‬
‫‪Initial value‬‬ ‫ال بد أن تكون إحدى قيم الـ ‪when check / un check‬‬
‫اتلقيمة اإلفتراضية‬

‫الخاصية ‪ Check box mapping of other values‬تعنى اآلتي ‪-:‬‬


‫إذا كان الـ ‪ un check = 0 ,check = 1‬وتم إدخال قيم غير ذلك وليكن ‪ 2‬فبماذا يعاملھا ‪check / un check‬‬
‫ملحوظة ھامة‬
‫إذا تم إدخال قيم للعنصر من النوع ‪ Check box‬مخالفة للقيم الموجودة للـ ‪When check / un check‬‬
‫وذلك فى الـ ‪ ISQL‬فأنة لن يرفض ولكن عرضھا فى الـ ‪ Form‬يتم بناء على ‪Check box mapping of‬‬

‫‪List Item‬‬

‫‪Compo List‬‬ ‫‪Text List‬‬ ‫‪Popup List‬‬


‫لالختيار أو الكتابة بداخلھا التعبئة فى الـ‪ run time‬بكود‬ ‫التحرك ألعلى واسفل ونفس‬ ‫ال يكتب بداخلھا‬
‫التعبئة من ‪ Data‬ثابتة لھا قيم ثابتة من الخصائص‬ ‫‪ on editable‬طريقة التعبئة ) بكود (‬
‫‪Mouse navigator = yes‬‬ ‫ال يكتب بداخلھا عند الـ‪rtime‬‬
‫يمكن الكتابة بداخلھا عند الـ‪rtime‬‬ ‫ويفضل أن نكبر حجمھا عند اإلنشاء‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪List item properties‬‬


‫الخاصية‬ ‫القيمة‬
‫‪Element in list‬‬
‫‪List Item‬‬ ‫القيم التى ستظھر عند الـ ‪R time‬‬
‫‪List Value‬‬ ‫القيم التى ستنزل بقاعدة البيانات‬
‫‪Mapping of other values‬‬ ‫وذلك عند إدخال قيم غير الموجودة بالـ‪List item‬‬
‫يعاملھا على أنھا قيمة ) ال بد من وجودھا ( بالـ‪List item‬‬
‫‪Data‬‬
‫‪Initial value‬‬ ‫إحدى القيم الموجودة بالـ‪List item‬‬
‫‪Required‬‬ ‫إذا كانت بـ‪ yes‬فال بد من اختيار قيمة‬

‫‪Radio group‬‬

‫‪Contain many radio buttons‬‬ ‫•‬


‫‪For every R group we can select only one R button‬‬ ‫•‬
‫ال بد من وجود ‪ R group‬أوال لعمل ‪R button‬‬ ‫•‬
‫إذا تم عمل ‪ R button‬أوال يتم عمل ‪ R group‬تلقائيا‬ ‫•‬
‫عند عمل ‪ R button‬ووجود ‪ R Group‬تظھر ‪ Lov‬بأسماء الـ‪ group‬الختيار أحدھم ‪,‬‬ ‫•‬
‫اختيار عمل ‪ R group‬جديدة‬

‫‪Radio group properties‬‬

‫بفرض أننا سنغير خصائص الـ ‪ Deptno‬إلى ‪R group‬‬


‫الحظ أن بتغيير خاصية العنصر فأنة يختفى والظھارة نضغط زر ‪F3‬‬
‫فنجد أن العنصر ‪ deptno‬اصبح ‪ R group‬فنقف علية ونظھر الـ ‪R buttons‬‬
‫ثم نقوم بإنشاء ‪ R buttons‬ونغير خصائص الـ ‪ R button‬األول‬
‫الحظ أن عند إنشاء ‪ R button‬فى الـ ‪ Canvas‬يظھر مربع يوجد بة العمود صاحب الـ‪R button‬‬
‫مع مالحظة أن ھذا العمود )‪ (deptno‬اصبح اسمة ‪ R group‬ثم نعدل خصائص الزر األول‬

‫‪Functional‬‬
‫‪label‬‬ ‫ما يكتب على الزر‬
‫‪R button value‬‬ ‫القيم التى ستنزل قاعدة البيانات مع مالحظة اختالف القيم لكل زر‬
‫‪Mapping of other values‬‬ ‫وذلك عند إدخال قيم مختلفة وذلك فى الـ‪ isql‬فبماذا يعاملھا‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫يفضل وضع الـ ‪ R group‬فى ‪ Frame‬ويوضع بداخلة ‪R button‬‬


‫ثم نغير الـ ‪ Frame Title‬إلى اسم العمود ) ‪(deptno‬‬
‫‪Button item‬‬

‫‪Functional‬‬
‫ما يكتب على الزر ‪label‬‬
‫‪Icon‬‬ ‫‪yes‬‬

‫‪Layout Frame properties‬‬


‫‪Update layout‬‬ ‫وتعنى عند التعديل فى الـ‪ Frame‬ھل يعدل فى العناصر‬
‫افضل قيمة ھى ‪Locked‬‬
‫‪Allow Expansion‬‬ ‫احتواء العنصر‬
‫‪Shrink warp‬‬ ‫يحذف المسافات الفارغة بالعنصر ) احتواء البيانات (‬

‫‪Window Properties‬‬

‫الخاصية‬ ‫القيمة‬
‫‪Title‬‬ ‫عنوان النافذة‬
‫‪Primary Canvas‬‬ ‫إذا كانت النافذة تحمل اكثر من ‪Canvas‬‬
‫‪Modal‬‬ ‫التبديل ما بين النوافذ متاح أم ال‬
‫والقيمة ‪ no‬تعنى متاح‬
‫‪Hide on exit‬‬ ‫عند الذھاب لنافذة أخرى تختفى األولى وھكذا‬
‫‪Close Allow‬‬ ‫اختفاء عالمة اإلغالق وھكذا باقى العالمات‬
‫‪Icon file name‬‬ ‫‪http:// server_name:8888/ picture_name‬‬
‫‪Physical‬‬
‫‪Bevel‬‬ ‫حدود النافذة‬

‫‪Types of Trigger‬‬
‫‪1 - user_named trigger‬‬ ‫‪2 - on_trigger_name‬‬ ‫‪3 - when‬‬
‫‪4 - key‬‬ ‫‪5 - Pre‬‬ ‫‪6 - post‬‬

‫النوع الرابع يعمل عند الضغط على زر معين بينما النوع األخير يعمل قبل حدوث تغيرات بقاعدة البيانات‬
‫مثال على النوع ‪ on_trigger_name‬كال من ‪on error , on message‬‬
‫اى رسالة تظھر على الـ ‪ Consol‬اعرف رقمھا ثم اعرف ھل ھى ‪ error‬أم ‪message‬‬

‫‪Level of triggers‬‬
‫‪1 - form‬‬ ‫‪2 - block‬‬ ‫‪3 - item‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫اى ) ‪ Built in ( Procedure / function‬يجب معرفة التالى عنھا‬

‫‪ – 1‬عملھا ‪ – 2‬ھل ھى ‪ Procedure‬أم ‪Function‬‬


‫‪ – 3‬لو ‪ Function‬ما ھى نوعية الـ ‪ Data type‬اللى ھترجع‬
‫‪ – 4‬عدد الـ ‪ argument‬وكذلك نوع بياناتھا‬
‫‪ – 5‬معرفة الجملة ‪ Syntax‬وكذلك مثال عليھا‬
‫‪ – 6‬ھل يوجد عليھا قيود ‪ ) Restricted‬ال تعمل فى الـ ‪ ( Enter_query‬أم العكس‬

‫ملحوظة ھامة ‪ :‬يمكن عمل زر وكتابة ‪ Trigger‬بداخلة وذلك بان‬


‫نضغط على الزر ‪ R- click‬ثم نختار ‪ smart trigger‬ثم نختار النوع المناسب‬
‫‪Enter_query , execute_query , exit_query , commit , clear_form‬‬

‫‪IMAGE‬‬

‫إلدراج صورة على الـ ‪Form‬‬


‫‪ -‬وذلك فى وضع الـ ‪ Design‬نختار من قائمة ‪ Edit‬األمر ‪Import‬‬
‫‪ -‬أما في حالة انشاء جدول جديد يحتوي علي صورة من نوع ‪ blob‬فنقوم بفتح ال ‪ isql‬ونضع فيھا الكود‬
‫كما بالشكل التالي‬

‫‪-‬‬
‫‪ -‬نبدأ مثال الصورة بالتعامل مع الجدول الذي تم انشاءة فنقوم بفتح فورم ونقوم بانشاء بلوك جديد‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪ -‬عند اإلنتھاء يكون شكل الفورم كما بالشكل التالي‬


‫‪ -‬بإنشاء زر جديد وتغير ال ‪Label‬لة ليكون ‪ Load Picture‬والوقوف بز الماوس االيمن علية‬
‫واختيار ‪ when Button pressed‬كما بالشكل‬
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]
Image Item
‫الخاصية‬ ‫القيمة‬
Image format DB‫ التي ستخزن بھا فى الـ‬Format ‫الـ‬
Image depth ‫شكل الصورة عند العرض‬
Compression quality ‫جودة الضغط‬
Show pallet ‫ظھور شريط بجوار الصورة للتحكم فيھا‬
Sizing title ‫ تعنى بنفس حجمھا على الجھاز‬Corp ‫القيمة‬
‫ تعنى بنفس حجم العنصر‬Adjust ‫القيمة‬

Forma‫كود عرض الصور فى الـ‬


‫ لنكتب فية اسم الصورة باالمتداد‬Text item ‫ عنصر من النوع‬Forma ‫نضع فى الـ‬
Image item ‫ عند الضغط علية يحمل الصورة من مكانھا على الحاسب على الـ‬Trigger ‫ثم نضع زر بة‬

Declare.
V_path varchar2(25);
V_exe varchar2(5);
Begin
V_path := ‘g:\photo\’||:text; -- path of image || picture name
V_exe := substr (:text , -3 , 3 );
Read_image_file (v_path , v_exe , ‘photo’); -- photo name of
image item
End;

‫ يتم تغير الكود ليصبح‬.jpg ‫ في حال حددنا نوع معين من االمتداد وليكن‬-
Declare.
V_path varchar2(25);
Begin
V_path := ‘g:\photo\’||:text|| ‘.jpg’ ; -- path of image || picture name
Read_image_file (v_path , ‘.jpg’, ‘photo’); -- photo name of image
item
End;
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪ -‬الحظنا في المثال االول انة تم االعتماد علي ان االمتداد مكون من ‪ 3‬حروف متجاھال ان ھناك صورة‬
‫تتكون من ‪ 4‬حروف مثل ‪ jpeg‬ولعمل كود يشمل اي عدد‬

‫‪Declare.‬‬
‫;)‪V_path varchar2(25‬‬
‫;‪B number‬‬
‫‪Begin‬‬
‫‪V_path := ‘g:\photo\’||:text; -- path of image || picture name‬‬
‫;)‪B:inster(v_path,’.’,-1‬‬
‫‪Read_image_file (v_path , B , ‘photo’); -- photo name of image‬‬
‫‪item‬‬
‫;‪End‬‬

‫إذا أردنا أن يأخذ ‪ item‬معين رقم مسلسل تلقائيا‬


‫‪ -‬نأتي فى الـ ‪ Trigger‬من النوع ‪ when_new_record_instance‬ونكتب ھذا األمر‬
‫‪Item_id := system.cuesor_record‬‬

‫لتغير خصائص الدخول لألوراكل‬


‫‪ -‬المسار التالي ھو المسئول عن ذلك من ناحية طول وعرض وخصائص ‪Instance‬‬

‫وبفتح الملف عن طريق ‪ otebad‬نجد داخلة بعض االكواد ‪html‬ونجد فيھا التالي‬
‫‪separateFrame=false‬‬
‫‪separateFrame=true‬‬
‫‪colorScheme=teal‬‬
‫‪Forms applet parameter # =background‬‬
‫‪Forms applet parameter #=logo‬‬
‫لتغير الصورة التي تظھر في بداية تشغيل اوراكل‬

‫نذھب الي المسار التالي‬


‫‪G:\ids\j2ee\home\default-web-app‬‬
‫ونذھب الي ملف التعديل‬
‫‪Splashscreen=Http://Localhost:8889/aa.gif‬‬
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬
‫‪Procedure‬‬
‫عمل اجراء معين‬

‫المتغيرات‬
‫‪Parameter‬‬

‫‪OUT‬‬ ‫‪IN‬‬

‫‪Function‬‬

‫عمل إجراء معين والعودة بقيمة‬


‫‪Built In‬‬
‫‪ -1‬بتعمل إية‬
‫‪ -2‬ھل ھي ‪Function / Procedure‬‬
‫‪ -3‬لو ‪Function‬اعرف النوع اللي ھترجعة‬

‫المتغيرات‬

‫‪Data Base‬‬ ‫‪Developer‬‬

‫مستوي ال ‪Trigger‬‬
‫علي مستوي ال ‪Trigger‬‬ ‫‪-1‬‬
‫علي مستوي ‪Block‬‬ ‫‪-2‬‬
‫علي مستوي ال ‪Record‬‬ ‫‪-3‬‬
‫علي مستوي ‪Item‬‬ ‫‪-4‬‬

‫‪Buid I‬‬

‫‪Set_Item_Property‬‬
‫ونستطيع الدخول عليھا من ال ‪Help‬عن طريق الضغط علي ‪F1‬‬
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

‫ تغير قيمة العنصر‬-1


Procedure -2
---- -3
SET_ITEM_PROPERTY(item_id ITEM,property UMBER,value VARCHAR2 -4

Get_Item_Property
F1 ‫عن طريق الضغط علي‬Help ‫ونستطيع الدخول عليھا من ال‬

‫ تغير قيمة العنصر‬-1


Procedure -2
Character ‫ ترجع‬-3
SET_ITEM_PROPERTY(item_id ITEM,property UMBER,value VARCHAR2 -4

‫ لوضع الدلة السابقة داخل الكود كما يلي‬-

Declare.
V_x :number;
V_y :number;
Begin
V_x:=Get_item_proprty(‘bb’,x_pos);
V_x:=Get_item_proprty(‘bb’,y_pos);
SET_ITEM_PROPERTY (‘bb’,x_pos,v_x+10)
End;
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪Read_Image_file‬‬

‫)العنصر صاحب الصورة – اإلمتداد – المسار كامل(‬

‫‪Declare.‬‬
‫;)‪V_path varchar2(25‬‬
‫;)‪V_exe varchar2(5‬‬
‫‪Begin‬‬
‫‪V_path := ‘g:\photo\’||:text; -- path of image || picture name‬‬
‫;) ‪V_exe := substr (:text , -1 , 3‬‬
‫‪Read_image_file (v_path , v_exe , ‘photo’); -- photo name‬‬
‫‪of image item‬‬
‫;‪End‬‬

‫‪ALERT‬‬
‫وھي رسائل تحذيرية ورسائل تنبة المستخدم بوجود خطأ ما وقع فية المستخدم وذلك عن طريق عمل جميع‬
‫االخطاء بتوقعھا وتحويلھا الي رسائل تحذيرية ‪.‬‬
‫‪Set_Alert_Property‬‬
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

(“Alert_name”,”alert_message_text”,value)
Set_Alert_Property
(“Alert_name,alert_Button1,’label’,value)

‫ تسمى‬Function ‫ توجد‬Alert‫ وإلظھار الـ‬Form‫ يكون على مستوى الـ‬Alert‫الـ‬


Show_alert ( `alert_name`)

Show_Alert
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫‪ -1‬إظھار ا ل ‪Alert‬‬
‫‪Function -2‬‬
‫‪ -3‬ترجع ال ‪Alert‬‬
‫‪ -4‬محتاجة متغير من النوع ‪ umber‬إلستقبالھا متغير واحد وھو اسم ال ‪umber‬‬
‫خصائص النافذة التي ستظھر للمستخدم‬
‫عن طريق ‪ F3‬نقوم بإنشاء ‪Alert‬ثم بالضغط علي ‪ F4‬ندخل علي قائمة الخصائص‬

‫الخاصية‬ ‫القيمة‬
‫‪Title‬‬ ‫عنوان الرسالة‬
‫‪message‬‬ ‫الرسالة المراد ظھورھا‬
‫‪Button Label 1‬‬ ‫ما يكتب على الزر األول وھكذا باقى األزرار‬

‫مثال )‪(1‬‬

‫خطأ رقم ‪40600‬‬


‫نقوم بالخول لل ‪Help‬ونبحث عن رقم الخطأ‬

‫نقوم بإنشاء ‪ Alert‬ونضع خصائصا كما بالسابق‬


‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

Pl/sql editor ‫ ثم نختار‬Program unit node ‫ نقف على‬Procedure ‫ لعمل‬-


‫ يظھر عند أي رسالة خطا ولكن يشترط معرفة رقمة‬Trigger ‫ لعمل‬-
‫ ثم نكتب ھذا الكود‬On_error ‫ وذلك من النوع‬Form ‫يتم انشاءة على مستوى الـ‬

declare
v_alert alert;
v_n number;
begin
if error_code=40600 then -- data can not duplicate
v_n :Show_Alert(‘alert6’);
if v_n=1
raise form_trigger_failure; -- package used to stop form
end if v_n=2 then
null
--or write(clear_block(no_validate);
-- or write(clear_block(no_Commit);
End if;
End if;
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

(2) ‫مثال‬

‫ وھو خاص بصيغة التاريخ‬50026 ‫خطأ رقم‬


‫ونبحث عن رقم الخطأ‬Help ‫نقوم بالخول لل‬

‫ ونضع خصائصا كما بالسابق‬Alert ‫نقوم بإنشاء‬


Pl/sql editor ‫ ثم نختار‬Program unit node ‫ نقف على‬Procedure ‫ لعمل‬-
‫ يظھر عند أي رسالة خطا ولكن يشترط معرفة رقمة‬Trigger ‫ لعمل‬-
‫ ثم نكتب ھذا الكود كما السابق‬On_error ‫ وذلك من النوع‬Form ‫يتم انشاءة على مستوى الـ‬

Procedure ‫كتابة ال‬


-: ‫ ھى‬Alert ‫ الخاصة بتغيير خواص الـ‬Procedure ‫الـ‬
PROCEDURE my_alert
(p_message varchar2,
p_1 varchar2 default null,
p_2 varchar2 default null,
p_3 varchar2 default null) is
BEGI
set_alert_property('ALERT1',alert_message_text,p_message);
set_alert_button_property('ALERT1',alert_button1,label,p_1);
set_alert_button_property('ALERT1',alert_button2,label,p_2);
set_alert_button_property('ALERT1',alert_button3,label,p_3);
-- alert1 name of alert
ED;

Pl/sql editor ‫ ثم نختار‬Program unit node ‫ نقف على‬Procedure ‫لعمل‬

‫ يظھر عند أي رسالة خطا ولكن يشترط معرفة رقمة‬Trigger ‫لعمل‬


‫ ثم نكتب ھذا الكود‬On_error ‫ وذلك من النوع‬Form ‫يتم انشاءة على مستوى الـ‬
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

declare
v_alert alert;
v_n number;
begin
if error_code=40600 then – item must contai\n and cant be
duplicate
v_alert:= find_alert('alert7');
MY_ALERT('sorry this number exist',’yes’,’no’);
V_n:=show_alert('alert7');
If v_n=1 then
raise form_trigger_failure; -- package used to stop form
elseif v_n=2 then
clear_block(no_validate);
end if;
else if error_code=50026 then

‫ملحوظة ھامة‬
save , enter_query , ... ‫إذا تم عمل أزرار لكال من‬
‫ الخاصة بة‬Bulti in ‫فأننا ال نكرر الكود مرة أخرى ولكن نكتب تحت كل زر الـ‬
Save : do_key (‘commit_form ‘);
Exit : do_key (‘exit_form ‘);
Execute : do_key (‘execute_query‘);
Enter : do_key (‘enter_query‘);
bush button ‫ لھذه األزرار‬mouse navigator = no ‫ويجب أن تكون الـ‬
Run time ‫ بقيم فى الـ‬List ‫كود تعبئة قائمة‬

‫إذا أردنا فى جدول اإلدارات إذا اخترنا إدارة معينة ) رقم إدارة ( يتم‬
‫ بأسماء العاملين بھذة اإلدارة‬List ‫ملئ قائمة‬
data base item = no ‫ مع مالحظة أن‬name ‫ ونسميھا‬List ‫ نقوم بعمل‬Dept block ‫بعدما ننشئ الـ‬
deptno ‫ على مستوى العنصر‬when_validate_item ‫ من النوع‬Trigger ‫ثم ننشئ‬
‫ثم نكتب ھذا الكود‬

DECLARE
CURSOR AA IS
SELECT ename
FROM EMP
WHERE DEPTno = :DEPATno;
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

V_A NUMBER := 1;-- INDEX


BEGIN
CLEAR_LIST ('NAME'); --
FOR K IN AA LOOP
ADD_LIST_ELEMENT('NAME',V_A,K.LAST_NAME,K.LAST_NAME);
-- (LIST NAME,INDEX,LABEL,VALUE)
V_A := V_A+1;-- COUNTER
END LOOP;
END;

Key down ‫ من نوع‬Trigger ‫ ونقوم بإنشاء‬LIST ‫ثم نقوم بإنشاء فورم ونضيف لھا‬

‫ثم نقوم بكتابة الكود التالي‬


Select dname
Into:ds
From dept
Where deptno=:deptno;

Canvas Types

Horizontal / Vertical .1
Emp ‫ على الـ‬form ‫بفرض أننا لدينا‬
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

‫ ونغير القيمة‬F4 ‫ جديد ثم نضغط‬canvas ‫ وننشئ‬canvas node ‫فنقف على‬


General / canvas type : horizontal / vertical
‫ الجديد‬canvas ‫ ثم نعطيھا الـ‬canvas ‫ثم نضع علية األزرار الذى نريدھا مع مالحظة أن نكبر الـ‬

Tap Canvas .2
Tap ‫ يكون‬canvas ‫ ولكن نوع الـ‬dept block ‫ – ننشئ‬1
F4 ‫ ثم نضغط‬tap page / page ‫ ولتغيير اسم الصفحة نختار‬new page ‫ونختاره على‬
Label ‫ونقوم بنغييرة من الـ‬
‫ ولكن على صفحة جديدة‬canvas ‫ ونعطيھا نفس الـ‬emp block ‫ – ننشئ‬2
2 tap page ‫ واحد ولكن‬canvas ‫ أنة‬: ‫الفكرة‬

‫لجعل الصفحات وضعھا مختلف‬


physical / tap Attachment edge ‫ نغير الخاصية‬canvas ‫وذلك من خصائص الـ‬

‫ المحدد يأخذ لون معين عند الوقوف علية‬record‫لشد انتباة المستخدم وذلك بجعل الـ‬
Create Visual Attribute
‫ فنختار لون معين‬Color / Back ground F4 ‫ثم نغير خصائصة وذلك بالضغط على‬
‫ثم نأتي بعد ذلك على البلوك ونغير الخاصية‬
Block / record / current record visual attribute
‫ التى قمنا بإنشائھا‬visual attribute ‫فنقوم باعطائة الـ‬

Running a Form
Forms Services: generate an HTML file that •
download java applet to the client machine
URL : http://host[:port]/forms servelet or html file •
Port for HTTP server : xxxx for oc4j = 8888
Forms servelet alias or static html file : /forms90/f90servelet
Parameter : start with ? separated by &
? form = form_name . fmx
userid = username / password @ data base name
parameter : can be taken from the forms configuration file
http:// mohamed:8888/forms90/f90servlet?…

JRE : Java Runtime Environment

the forms applet : run in JRE on the Client machine

types of JRE :
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

native :java – enabled browser .1


jinitiator : oracle – supplied plug – into web browser .2

JAR : Java Archive file ( increment download by jinitiator )


OC4J : servelet engine and insert only one time

Starting run time session :


1 - User access the URL that indicate a forms application
2 - Oc4j receives an HTTP from the browser client and contact the forms servelet
3 – forms servelet create an HTML page that

contain all information to start Form session

the form servelet


get information from the following sources
1 – the forms web configuration file
2 – the forms base HTML File
3 – URL

Forms Listner : start the forms Run time engine

Types Of Trigger

Types Of Trigger

Trigger ame : When_validate_item •


Fire during : The validate the item processing •
Definition level : Form , Block or item •
Legal Command : Select statement Unrestricted bultin •
On failure : Navigation fails and the focus remain on the originalitem •
Enter Query mode : no •

Trigger ame : When_new_form_instance •


‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

Fire during : After the successful completion of any navigational •


triggers that fire during the initial navigation sequence in multiple form
application the trigger doesn’t fire when focus change from one form
to another
Definition level : Form •
Legal Command : Select statement Restricted / Unrestricted bultin •
On failure : no effect •
Enter Query mode : no •

Trigger ame : When_new_item_instance •


Fire during : when the I/P focus moves to an item , after •
navigation to an item
Definition level : Form , Block or item •
Legal Command : Select statement Restricted / Unrestricted bultin •
On failure : no effect •
Enter Query mode : no •

Trigger ame : When_mouse_doubleclick •


Fire during : after the operator double click the mouse •
Definition level : Form , Block or item •
Legal Command : Select statement Restricted / Unrestricted bultin •
On failure : no effect •
Enter Query mode : no •

Trigger ame : on_error •


Fire during : when ever forms developer would normally cause an •
error message to display
Definition level : Form , Block or item •

Legal Command : Select statement Restricted / Unrestricted bultin •


On failure : no effect •
Enter Query mode : no •
‫]‪ [Year‬كتاب تعليم اوراكل بالعربي)فورم( م ‪/‬علي مختار الصباغ‬

‫الـ ‪ Function‬المستخدمة الستدعاء الـ ‪ Forma‬من اى مكان بالھارد‬

‫‪FUNCTION GET_PATH RETURN VARCHAR2‬‬


‫‪IS‬‬
‫;)‪A VARCHAR2(50‬‬
‫;‪B NUMBER‬‬
‫‪BEGIN‬‬
‫;)‪A := GET_APPLICATION_PROPERTY(CURRENT_FORM‬‬
‫;)‪B := INSTR(A,'\',-1‬‬
‫;)‪A := SUBSTR(A,1,B‬‬
‫; )‪RETURN (A‬‬
‫;‪END‬‬
‫ولتنفيذھا نكتب األمر ;)'‪EW_FORM(GET_PATH||'form name.fmx‬‬

‫الـ ‪ get_application_property‬تقوم بإرجاع المكان الموجود بة الـ‪ Form‬المفتوحة وترجع ‪ null‬إذا تم‬
‫فتح الـ‪ form‬الذى ننادى عليھا من مكان أخر ) تم فتحھا مباشرة (‬
‫يمكن تنفيذ الـ ‪ procedure‬السابقة بكتابة األمر ;)'‪call_FORM(GET_PATH||'form name.fmx‬‬
‫وذلك حسب ما نريد‬
‫تعنى فتح الـ ‪ Forma‬الجديدة بنافذة جديدة وغلق نافذة الـ ‪ forma‬األصلية مفتوحة ‪new_form‬‬
‫بينما الـ ‪ call_form‬تعنى فتح الـ ‪ Forma‬الجديدة بنافذة جديدة وترك نافذة الـ ‪ forma‬األصلية مفتوحة‬

‫‪BULTII‬‬

‫‪Bultin‬‬ ‫‪Type‬‬ ‫‪Working‬‬ ‫‪syntax‬‬


‫‪Read_image_file‬‬ ‫‪procedure‬‬ ‫تستخدم ألدراج صورة‬ ‫‪(`direction`,`extension,`item‬‬
‫بالنموذج‬ ‫)`‪name‬‬
‫‪Set_item_property‬‬ ‫‪procedure‬‬ ‫تغيير خصائص العنصر أثناء‬ ‫‪(‘item name`,property,value‬‬
‫العمل بالنموذج‬ ‫)‬
‫‪Get_item_property‬‬ ‫‪Function‬‬ ‫تستخدم إليجاد قيمة خاصة‬ ‫) ‪(`item name`, property‬‬
‫وتحتاج متغير‬ ‫لعنصر معين‬
‫علي مختار الصباغ‬/ ‫[ كتاب تعليم اوراكل بالعربي)فورم( م‬Year]

‫الستقبالھا من‬
‫النوع‬
Number ,
varchar2
Show_alert Function ‫تستخدم إلظھار الـ‬ (`alert name `)
‫وتحتاج متغير‬ Alert
‫الستقبالھا‬
‫من النوع‬
number
Set_alert_property procedure alert‫تغيير خصائص‬ (`alert
name`,property,value)
Add_list_element Procedure ‫ فى الـ‬List ‫تعبئة‬ (‘list name`,index,
Run time `label`,`value` )
clear_list procedure list ‫تفريغ الـ‬ (`list name`)
Run time ‫فى الـ‬
Show_lov Function Lov ‫إظھار الـ‬ `lov name`)(
‫وتحتاج الستقبالھا‬
‫متغير من النوع‬
Boolean
Get_application_property Function Form‫بترجع مسار الـ‬
(current_form) ‫وتحتاج الستقبالھا‬ ‫الذى اقف عليھا‬
‫متغير من النوع‬
Varchar2

Get_application_property Function user‫بترجع اسم الـ‬ ‫كذلك يوجد كال من‬


(username) ‫وتحتاج الستقبالھا‬ Form‫الذى دخل على الـ‬ Password ,
‫متغير من النوع‬ Connecting _string =
Varchar2 db name = dev1
Set_block_property procedure DML‫منع أو إتاحة أوامر الـ‬ `block (
name`,property,value)

You might also like