Professional Documents
Culture Documents
Oracle10g Forms
Oracle10g Forms
اﻟﺒﻮﺻﻠﺔ اﻟﺘﻘﻨﻴﺔ
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
نوع العنصر
خاصية الجافــــا
تعليقات
خاصية الجافــــا
اكتر من سطر
خاصة بالتاريخ
نتركھا بصفر
حساسية الحرف
-2من داخل نفس الـ Moduleنقف على الـ Data Blockوننشى الـ (Emp Block) Detail Block
وھو يزيد صفحة عن الـ Masterوھى صفحة العالقة
Detail block . foreign key column = Master block . foreign key column
مع مالحظة انة يتم وضع الـ Master Blockأوال ) معاة العالقة (
ويكون الـ Detailمن النوع Tabular
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
ملحوظة ھامة
المستر البد ان يكون فوق ال 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
الخاصية القيمة
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
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
ملحوظة ھامة
• لعرض التاريخ الحالى فى عنصر عند عرض الـ Formفى الـ Run time
نجعل خاصية الـ Initial valueللعنصر نكتب فيھا $$datetime $$ , $$date$$
• إلظھار الـ Editorفى الـ run time
نقف فى العنصر ثم نضغط من لوحة المفاتيح , Ctr + eنختار من قائمة Edit / Editor
مع مالحظة إذا وقفت فى اى عنصر ليس له خاصية الـ Editorفأنة يكتب حسب الحجم المحدد له
فى جمل الـ Updateيتم البحث على الـ DB itemويتم عمل تحديث لھا فقط دون غيرھا
3 Tier
Client Tier .1
Middle Tier ( Web Server - Forms Services ) .2
Data Base .3
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
يدخل فى الـ browserمرة واحدة ويقوم بإنشاء ملف الـ HTMLمرة واحدة فقط Jinitiator
Forms services :
Forms servelets خاصة بالـForm
Forms Listener Services تعطى الـ Parameterللعنصر التالى
Forms runtime engine يعدل فى الـDB
ملحوظة ھامة
ويكون الناتج
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
-لجعل صف معين يأخذ شكل جمالي نقوم بعمل إنشاء Visual Attributes
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
ويكون الناتج علي اي عمود وذلك بإختيار العمود والدخول الي خصائصة واختيار Visual Attribute
واختيار الخصائص السابق اعدادھا ليكون الناتج كما يلي
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
عند ادخال بيانات مثل نوع اإلشارة واسمھا والتخزين بالرقم مثل Dept no
-نقوم بإضافة Display item
-نقوم بإنشاء Lov
وتنقسم الي نوعين
Import query -
Build Wizard -
ھى قائمة مساعدة تحتوى على قيم يتم اختيار أحدھا بدال من كتابتھا •
تظھر الـ LOVعند الضغط على Ctr + Lوالمؤشر داخل العنصر صاحب الـ LOV •
من قائمة display lovإذا كان المؤشر داخل العنصر صاحب الـ Lovفأنة يظھر ما •
يفيد بذلك على الـConsol
تقوم الـ Lovعلى record groupعبارة عن صورة من جدول قاعدة البيانات •
-2نقف على Lov nodeوننشئ واحدة جديدة ونختار الـ Wizardثم next
فتظھر شاشة نكتب بھا جملة االستعالم
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
وقى ھذا المثال ھو emp_diثم تضغط okتم nextفيظھر مربع حوار نكتب فية الـ Title
ثم nextفيظھر مربع حوار يفضل تركة للـ Serverثم next
فتظھر شاشة مقسمة لجزئين Return item , Assigned item
فنختار ما نريد ظھورة فى الـ Assigned itemوذلك من الـ Return itemثم nextثم نضغط Finish
الحظ أن :قد تم إنشاء كال من lovs , record groupفنقوم بتغير أسمائھم وليكن dept , dept
-بعد عمل بلوك جديد نضع علية Display Utem 2فيتم انشائھم تلقائيا بعدد اليجالت الموجودة ولتكن 5
بالنسبة لل displayالتي ستقوم بجمع ال COMM+ SALفنتركھا بعدد السجالت ام بالنسبة لل
Displayالتي سيتم فيھا جمع ال SALفنغير في خصائصا كما بالصورة التالية
ونقوم بتسمية ال Displayالخاص بجمع المرتب والحوافز ب Totalوالثاني الخاص بجمع المرتب Sum
وتكون الصورة النھائية للفورم كما بلشكل التالي
علي مختار الصباغ/ [ كتاب تعليم اوراكل بالعربي)فورم( مYear]
ھاااااااااام
ملحوظة ھامة
-لو اردنا كتابة تعليق داخل الكود وال يتم التعامل معة علي انة كود يتم وضع قبل السطر –
-ولو كان الكالم اكتر من سطر نضع قبل بداية الكالم */وفي نھايتة */
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
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
اتلقيمة اإلفتراضية
List Item
Radio group
Functional
label ما يكتب على الزر
R button value القيم التى ستنزل قاعدة البيانات مع مالحظة اختالف القيم لكل زر
Mapping of other values وذلك عند إدخال قيم مختلفة وذلك فى الـ isqlفبماذا يعاملھا
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
Functional
ما يكتب على الزر label
Icon yes
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كتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
IMAGE
-
-نبدأ مثال الصورة بالتعامل مع الجدول الذي تم انشاءة فنقوم بفتح فورم ونقوم بانشاء بلوك جديد
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
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
وبفتح الملف عن طريق otebadنجد داخلة بعض االكواد htmlونجد فيھا التالي
separateFrame=false
separateFrame=true
colorScheme=teal
Forms applet parameter # =background
Forms applet parameter #=logo
لتغير الصورة التي تظھر في بداية تشغيل اوراكل
المتغيرات
Parameter
OUT IN
Function
المتغيرات
مستوي ال Trigger
علي مستوي ال Trigger -1
علي مستوي Block -2
علي مستوي ال Record -3
علي مستوي Item -4
Buid I
Set_Item_Property
ونستطيع الدخول عليھا من ال Helpعن طريق الضغط علي F1
علي مختار الصباغ/ [ كتاب تعليم اوراكل بالعربي)فورم( مYear]
Get_Item_Property
F1 عن طريق الضغط عليHelp ونستطيع الدخول عليھا من ال
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)
Show_Alert
] [Yearكتاب تعليم اوراكل بالعربي)فورم( م /علي مختار الصباغ
-1إظھار ا ل Alert
Function -2
-3ترجع ال Alert
-4محتاجة متغير من النوع umberإلستقبالھا متغير واحد وھو اسم ال umber
خصائص النافذة التي ستظھر للمستخدم
عن طريق F3نقوم بإنشاء Alertثم بالضغط علي F4ندخل علي قائمة الخصائص
الخاصية القيمة
Title عنوان الرسالة
message الرسالة المراد ظھورھا
Button Label 1 ما يكتب على الزر األول وھكذا باقى األزرار
مثال )(1
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) مثال
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]
Key down من نوعTrigger ونقوم بإنشاءLIST ثم نقوم بإنشاء فورم ونضيف لھا
Canvas Types
Horizontal / Vertical .1
Emp على الـform بفرض أننا لدينا
علي مختار الصباغ/ [ كتاب تعليم اوراكل بالعربي)فورم( مYear]
Tap Canvas .2
Tap يكونcanvas ولكن نوع الـdept block – ننشئ1
F4 ثم نضغطtap page / page ولتغيير اسم الصفحة نختارnew page ونختاره على
Label ونقوم بنغييرة من الـ
ولكن على صفحة جديدةcanvas ونعطيھا نفس الـemp block – ننشئ2
2 tap page واحد ولكن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?…
types of JRE :
علي مختار الصباغ/ [ كتاب تعليم اوراكل بالعربي)فورم( مYear]
Types Of Trigger
Types Of Trigger
الـ get_application_propertyتقوم بإرجاع المكان الموجود بة الـ Formالمفتوحة وترجع nullإذا تم
فتح الـ formالذى ننادى عليھا من مكان أخر ) تم فتحھا مباشرة (
يمكن تنفيذ الـ procedureالسابقة بكتابة األمر ;)'call_FORM(GET_PATH||'form name.fmx
وذلك حسب ما نريد
تعنى فتح الـ Formaالجديدة بنافذة جديدة وغلق نافذة الـ formaاألصلية مفتوحة new_form
بينما الـ call_formتعنى فتح الـ Formaالجديدة بنافذة جديدة وترك نافذة الـ formaاألصلية مفتوحة
BULTII
الستقبالھا من
النوع
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