إسكندر

خطوة خطوة لتصميم برنامج لدليل التلفونات

175 ردود في هذا الموضوع

مرحبا..

أنا عضو جديد في هذا المنتدى..

وكمشاركة أولى لي أود أن أضيف موضوع في هذا المنتدى..

وهذا الموضوع هوتصميم برنامج لدليل التلفونات

وسوف اشرح فيه كل خطوة أقوم بها

طبعا البرنامج بسيط جدا وليس معقد ويتكون فقط من جدول واحد

فأرجو تفاعلكم معي

وإذا كانت هناك طريقة أخرى أفضل من الطريقة التي استخدمتها فإطرحوها لكي تعم الفائدة على الجميع.

أولا سوف أشرح عمل البرنامج:

البرنامج طبعاً للمبتدئين في أوراكل ديلفلوبر وهو يتكون من ثلاثة إطارات:

الإطار الرئيسي وبه البحث عن البيانات وعرضها ومن هذا الإطار يمكن الحذف أيضاً

وهذا الإطار هو الذي ينقلنا إلى بقية الإطارات الأخرى.

الإطار الثاني إطار الإضافة(إضافة بيان جديد)

الإطار الثالث إطار التحديث بالبيانات الموجودة.

ونبدأ على بركة الله ولكن أهم شيئ تفاعلكم ..

أولا تكوين الجدول:

وهو عبارة عن جدول واحد فقط يوجد به البيانات التالية:

الإسمName ، العنوان Address ، التلفون Tel ، الإيميل Email ، ملاحظات Note

إفتح برنامج SQL * PLUS وإدخل بالمستخدم system/manager

وإنشئ الجدول phone كما يلي:

CREATE TABLE phone(
name varchar(30) primary key,
address varchar(20),
tel varchar(20),
email varchar(30),
note varchar(50));

لاحظ أن الإسم هو المفتاح الأساسي للجدول أي لايسمح أن يترك الأسم فارغا ولا يسمح أيضاً بإدخال الإسم أكثر من مرة (عدم تشابه الأسماء).

الأن ندخل مجموعة من القيود من أجل أن نطبق عليه بعض الأمثلة في البرنامج:

insert into phone
(name,address,tel,email,note) values
('Ahmed','Yemen','123321',[email protected]','');
insert into phone
(name,address,tel,email,note) values
('Mohammed','Iraq','2258647',[email protected]','');
insert into phone
(name,address,tel,email,note) values
('amer','Sudia','58694725',[email protected]','');
insert into phone
(name,address,tel,email,note) values
('moner','Egypt','55886644',[email protected]','');
insert into phone
(name,address,tel,email,note) values
('Mohsen','Yemen','123355',[email protected]','');
insert into phone
(name,address,tel,email,note) values
('moneraa','Iraq','5541857',[email protected]','');

بعد هذا سوف نبدأ بالدفلوبر ونبدأ بتصميم الإطارات

منتظر تفاعلكم مع الموضوع لكي أكملة..

تم تعديل بواسطه إسكندر
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اهلاً بك اخي إسكندر و انا في إنتظار القادم :) و حاول ان تدعم الموضوع في الصور عند الحديث عن الديفلوبر حتى يكون الموضوع مرجع لكل مبتدء هنا ..

و السلام ،،

بنت اليمن ،،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مرحبا..

لم أجد أي تفاعل..

معقولة أكثر من 50 زيارة وقراءة للموضوع ولم يرد سوى عضو واحد وشكرا جزيلاً لبنت اليمن على الرد.

على العموم سوف أكمل اليوم الدرس. ولكن إذا لم أجد تفاعل يذكر لن أستمر (أتفقنا..).

ولنبدأ على بركة الله:

1- افتح برنامج Oracle Form Builder

2- من نافذة Welcome to the form Builder إختار Use the Data Block Wizard(لماذا؟)

وذلك من أجل تكوين بلوك بيانات (داتا بلوك) جديد مربوط بالجدول phone الذي أنشأناه في الدرس الماضي.

ولن تستطيع تطبيق هذا الدرس إلا إذا طبقت الدرس الماضي.

3- إختار Display this page next time ثم التالي ثم إختار Table or View ثم التالي،

وذلك من أجل أن نستدعي الجدول من قاعدة البيانات.

4- لإستدعاء الجدول نختار Browse ثم إكتب إسم المستخدم وكلمة المرور system/manager

ثم نختار إسم الجدول وهو كما سميناه سابقاً بإسم phone

04_06_06_12_18_10_1149405490datablock1_ne.jpg

سوف يظهر لنا في العمود Available Columns أسماء جميع الحقول التي كوناها في الجدول.

إختار الجميع ليتم نقلهن جميعاً إلى العمود Database Item ثم التالي.

04_06_06_12_19_36_1149405576datablock_8ka.jpg

5- إختار Create the data block, then call the Layout Wizard ثم نهاية

وذلك من أجل إستدعاء Wizard أخر من أجل عمل تصميم لمحتويات بلك البيانات.

6- من الـ Wizard الجديد إختار التالي ثم إختار New Canvas أي ساحة عمل جديدة وإختار النوع Content

04_06_06_12_21_07_1149405667datablock37dz.jpg

7- ثم إختار الكل لنقل حقول الجدول إلى العمود Displayed Items

من أجل عرض هذه الحقول في ساحة العمل Canvas الجديدة ثم إختار التالي.

8- إختار التالي مرة أخرى أو يمكنك قبل إختار التالي ان تغير من عناوين الأعمدة

وهذا لايؤثر على التسميات الموجودة في الجدول ولكن أفضل تركها كما هي.

[imghttp://www.arabteam2000.com/picload/pics_10_05/04_06_06_12_21_48_1149405708datablock47bs.jpg

9- بعد إختيار التالي سوف تظهر شاشة لإختار شكل التصميم

إختار Form من اجل عرض صف واحد من البيانات

أما Tabular من أجل عرض عدد من الصفوف.

إختار Form ثم التالي.

10- سوف تظهر الآن شاشة من أجل وضع إسم للإطار الذي سوف يحوي بلك البيانات إجعله فارغا ثم التالي ثم نهاية.

لقد كونا الآن بلك بيانات مرتبط بقاعدة البيانات وبالجدول phone. يجب أن تكون شاشتك كما في الشكل التالي:

04_06_06_12_22_25_1149405745pic11jl.jpg

سوف يكون هذا Canvas هو الشاشة الأساسية الأولى ومنه سوف يتم الإنتقال إلى بقية الشاشات الأخرى التي سوف نكونها في الدروس التالية..

أي أن هذا الـ Canvas سوف يكون فقط لعرض النتائج وليس للإضافة والتعديل.

الان نغير من بعض الخصائص:

بلك البيانات المسمى حاليا phone سوف نغيير خصائصة كما يلي:

إنقر على بلك البيانات phone ثم إضغط المفتاح F4 من أجل عرض نافذة الخصائص

غير الخصائص كما يلي:

Name: View

Database Data Block: No

وإحذف كلمة phone من أمام الخاصية Query Data Source Name وذلك من أجل ان نجعل بلوك البيانات هذا غير مرتبط بالجدول( قد تتسأل لماذا أجعله غير مربوط بالجدول ومن أين سوف أستدعي البيانات) الجواب البيانات سوف نبحث عنها بإستخدام مربع نص وسيكون بلوك البيانات View فقط لعرض ما حصلنا عليه من البحث (لاتشغل بالك سوف تتوضح الفكرة مع التقدم في الدرس)

04_06_06_12_22_58_1149405778datablock5_yj.jpg

أما خصائص ساحة العمل Canvas فسوف نغيير خصائصها كما يلي:

Name: CNVView

الان حدد العناصر Name,Address,Tel,Email,Memo وذلك بالضغط على كل عنصر مع الإستمرار بالضغط على المفتاح Ctrl ثم إضغط المفتاح F4 لعرض الخصائص وغير كما يلي:

Item Type: Display Item وذلك من أجل العرض فقط

Database item: No

Canvas: CNVVIEW

Reading Order: Left to Right

04_06_06_12_23_30_1149405810datablock61bp.jpg

أما خصائص FRAME فغيرها كما يلي:

Update layout: Locked وذلك من أجل إذا أردت التغيير في حجم الإطار فلا يؤثر على العناصر.

الآن إحفظ عملك بالضغط على حفظ وإحفظه بإسم telephone

سوف أتوقف هنا اليوم ومنتظر تفاعلكم مع الدروس

وموعدنا غداً وإن غداً لناظره لقريب...

تم تعديل بواسطه walcom
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ملاحظة:

يوجد تناقض بسيط بين الدرس الأول والدرس الثاني المطبق للبرنامج فقط هو الذي سيكتشفه.. :lol: :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

استمر اخي الكريم مهما قل التفاعل ... فالموضوع سيستفاد منه .. و إن حرمك الاعضاء هنا التفاعل ... فلن يحرمك الله - إن شاء الله - الاجر .. و يكفي بأنه سيمر على الموضوع اعضاء سيدعون لك الله بما افدتهم ،،، :)

خالص الشكر مرة اخرى ...

بنت اليمن ،،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بسم الله الرحمن الرحيم

بارك الله فيك اخي العزيز إسكندر

واهلا وسهلا بك في المنتدى .,..

لا تزعل يا اخي إسكندر من قلت المشاركه ... فمنتدى الاوراكل يمر عليه الاعضاء مر الكرام .. يا خذ ما يريدونه او يعطون اسالة واجب.. او سئله تجد لها مليون جواب داخل المنتدى ولا يكلف نفسه في البحث في المنتدى .. ..

ولقد قلت اعطاء الدروس هنا .. فمرحبا بك ومرحبا بدروسك ...

استمر وبارك الله فيك .

ساقوم بتثبت الموضوع .. كي يكون لك حافز كبير للمتابعه وللاعضاء للمشاركه ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك يا اسكندر استمر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

صباح الخير

أشكرك أختى بنت اليمن على تفاعلك وإن شاء الله الأجرعند الله

وأشكرك أخي المشرف على تثبتك للموضوع مما أعطاني حافز كبير للإستمرار

وأشكرك أخ aseer30 على تشجيعك لي..

وتكملة للدروس فالدرس الثالث اليوم سيكون عن عرض البيانات وعرض نتائج البحث (الأسماء فقط) في قائمة وبمجرد الضغط على إسم شخص من القائمة تظهر التفاصيل في بلك البيانات.(هل وضحت الصور؟؟)

ونبدأ على بركة الله..

كيف ستكون عملية البحث؟؟؟

لعملية البحث نحتاج الى عنصر نص Text Item يتم كتابة حرف أو أكثر من حروف الاسم في عنصر النص هذا فيتم عرض جميع الأسماء (الأسماء فقط) التي تبدأ بهذا الحرف أو الحروف في قائمة. إذا سوف نحتاج أيضاً إلى عنصر القائمة List Item لعرض نتائج البحث..

إذا نحتاج الأن لتكوين عنصرين (عنصر نص لكتابة حروف البحث وعنصر القائمة لعرض قائمة بنتائج البحث).

1- كون مربع نص Text Item وعنصر قائمة List Item في بلوك البيانات View كما في الصورة التالية:

04_06_06_12_26_11_1149405971search15ns.jpg

2- غير خصائص Text Item كما يلي:

Name:SEARCH

Database Item: No

Canvas:CNVVIEW

04_06_06_12_27_30_1149406050search_5su.jpg

3- غير خصائص عنصر القائمة List Item كما يلي:

Name:LISTVIEW وتذكر هذا الإسم جيداً LISTVIEW سوف نستخدمه كثيراً في هذا الدرس.

إضغط على More بجوار الخاصية Elements in List وإحذف أي نص موجود أسفل List Elements ثم موافق

وذلك لمنع من إدخال أي بيانات الى القائمة يدوياً. فسوف يتم إدخال البيانات إلى القائمة بالإعتماد على محتوى مربع نص البحث.

List Style: Tlist

Database Item: NO

Canvas:CNVVIEW

Direction: Left To Right

04_06_06_12_28_02_1149406082search31ql.jpg

الأن إحفظ البرنامج ثم نفذه المفروض أن تظهر نافذة التنفيذ كما يلي:

04_06_06_12_28_38_1149406118pic39os.jpg

هذه النافذة كشكل عام تحتاج إلى التعديل عليها بالنقط التالية:

1- شريطي الأدوات والقوائم نريد إخفائهم (لن نحتاجهم في هذه الشاشة شاشة العرض والبحث)

2- إسم نافذة البرنامج Window1 نريد تغييرها إلى Telephone Guide

3- نافذة البرنامج نريدها مكبرة maximize

لتعديل هذه النقاط نقوم بالتالي:

1- من خصائص الفورم الرئيسي Telephone نحذف كلمتي DEFAULT&SMARTBAR من أمام الخاصية Menu Module

فهاتين الكلمتين تدلان على شريطي القوائم والأدوات.

2- من خصائص النافذة Window نغير التالي:

Name:Window1

Title: Telephone Guide

3- أما عملية تكبير النافذة فسوف نحتاج إلى Trigger (ماهو الترايجر؟؟)

الترايجر هو عبارة عن أكواد برمجية يتم تنفيذها في أوقات محددة في البرنامج .

إذا نكون ترايجر على مستوى الفورم Telephone أي أسفل الفورم TELEPHONE أنقر بالأيمن على Trigger ثم إختار

SmartTriggers ثم إختار WHEN-NEW-FORM-INSTANCE أي أن وقت تنفيذ هذا الترايجر هو عند تشغيل الفورم.

04_06_06_12_29_28_1149406168search49qb.jpg

سوف تفتح نافذة جديدة سوف نكتب بها بعض الأكواد بلغة PL/SQL البسيطة.

وسوف نكتب في هذا الترايجر ما يلي:

set_window_property('window1',window_state,maximize);

معنى هذا الكود انه غير في خصائص النافذة التي اسمها 'Window1' بحيث تصبح Maximize

الأن إحفظ البرنامج ونفذه.

تلاحظ أن النقاط السابقة قد تم تلافيها.

الان ماذا تلاحظ في نافذة التفيذ أين البيانات التي أدخلناها في الجدول في أول درس

حاول أن تكتب أي حرف في عنصر نص البحث ثم إضغط إنتر !!!!؟

لا يوجد شيئ... لم يبحث عن شيئ.. طبعاً لا يوجد شيئ

لإن حاليا كل الذي سويناه فقط الجزء المرئي يبقى الأن دور البرمجة.

أول شيئ نريده وقبل البدء بالبحث نريد عرض جميع الأسماء في عنصر القائمة Listview.

ولعمل ذلك سوف نحتاج إلى ترايجر على الفورم الرئيسي (نفس التريجر السابق سوف نفتحة ونعدلة إلى الشكل التالي:)

declare
cursor curs is select name from phone;
a varchar(30);
n number:=0;
begin
set_window_property('window1',window_state,maximize);
clear_list('listview');
open curs;
loop
fetch curs into a;
exit when curs%notfound;
n:=n+1;
add_list_element('listview',n,a,a);
end loop;
end;

الأن دعنا نشرح هذا الكود خطوة خطوة:

declare عنوان لتعريف المتغيرات ويحتوي على المتغيرات التالية:

cursor curs is select name from phone أي أن الـ curs هو متغير من نوع مؤشر أي مصفوفة من البيانات

تحتوي على عدد من البيانات ترجعها جملة الإستعلام select

وجملة select السابقة تعود بجميع الأسماء الموجودة في الجدولphone (واضح إن شاء الله)

a varchar(30 متغير حرفي طولة 30 حرف وسوف نستخدم هذا المتغير من أجل خزن الإسم فيه.

n number:=0 متغير رقمي قيمته الإبتدائية تساوي صفر وسوف نستخدمه كرقم السطر في القائمة

begin إيعاز لبداية البرنامج أو الكود

set_window_property('window1',window_state,maximize); تم شرحها سابقا والخاصة بتكبير النافذة

clear_list ('listview'); لتصفير وحذف أي عنصر من القائمة listview وهذه القائمة تعرفوها جيدا ألم أقل لكم تذكروا إسمها جيدا

open curs; لفتح المتغير curs

loop بداية دوارة

fetch curs into a; جلب أول سطر من المتغير curs ووضعة في المتغير a

وعند الرجوع مرة أخرى لهذ الكود فسوف يتم إستدعاء السطر الثاني من المتغير curs وهكذا الى حين الخروج من الدوارة.

exit when curs%notfound; شرط الخروج من الدوارة وهو عندما يكون المتغير curs قد أستدعى جميع أسطره

n:=n+1; زيادة قيمة المتغير n بواحد أي يصبح واحد في الدورة الأولى و أثنين في الدورة الثانية وهكذا.

add_list_element('listview',n,a,a); إضافة عنصر للقائمة listview في الموقع n

واسم العنصرالذي سوف نضيفه في القائمة هو قيمة المتغير a وإسمه في قاعدة البيانات ايضاً قيمة المتغير a

end loop; نهاية الدوارة.

end; نهاية البرنامج أو الكود.

إن شاء الله يكون هذا الكود واضح على العموم يجب أن يكون لديك فكرة ولو بسيطة عن لغة PL/SQL

الان إحفظ البرنامج ثم نفذ ماذا تلاحظ؟؟؟

جميع الأسماء التي أضفناها في الدرس الأول قد ظهرت في القائمة listview نتجية جميلة أليس كذلك؟؟

04_06_06_12_30_16_1149406216search57tw.jpg

ولكن أين بقية البيانات اي العنوان ورقم التلفون وغيرها؟؟؟

لكي تظهر هذه البيانات نحتاج ألى ترايجر أخر. (أين نحط هذا الترايجر ومتى يجب أن يتنفذ؟؟؟)

هذا ماسوف نتطرق به في الدرس القادم....

أترككم في رعاية الله.

تم تعديل بواسطه walcom
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك ولك .. واصل وكلنا معك الى النهايه ان شاء الله :)

تم تعديل بواسطه ANSI
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

للرفع :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم..

أكمل وإلا لا؟؟؟؟

سوف أكمل.. :D

ماذا نريد الآن؟؟

خطوة أخيرة قبل البدء بعملة البحث..

نريد عندما نضغط على إسم شخص من القائمة، تظهر جميع بياناته في بلك البيانات ، وهذا الشيئ يحتاج إلى ماذا؟؟؟

نعم برمجة بإستخدام PL/SQL والترايجر.

لكن هذه المرة أين سيكون موقع الترايجر؟؟؟

التريجر سيكون عند ضغط الماوس على عنصر القائمة

إذا سوف ننشئ ترايجر تحت listview وبالحدث WHEN-MOUSE-CLICK

أنقر بالز الأيمن على Trigger أسفل listview ثم أختار Smart Triggers ثم إختار Other

04_06_06_12_33_03_1149406383search63rh.jpg

سوف تظهر نافذة إختار منها When-Mouse-Click ثم موافق ثم أكتب الكود التالي:

declare
cursor curs is select * from phone where name=:view.listview;
n varchar(30);
a varchar(20);
t varchar(20);
e varchar(30);
m varchar(50);
begin
open curs;
loop
fetch curs into n,a,t,e,m;
exit when curs%notfound;
:view.name:=n;
:view.address:=a;
:view.tel:=t;
:view.email:=e;
:view.memo:=m;
end loop;
end;

ولنشرح بعض أجزاء الكود:

Cursor curs is select * from phone where name=:view.listview;

أعتقد واضحة. وهي تكوين متغير يحتوي على جميع بيانات (*) الجدول phone تحت شرط معين

وهو عندما محتوى name في الجدول يساوي محتوي القائمة listview تعرفوها طبعا وموقعها فن بلك البيانات View

(View.listview) الناتج سوف يكون سطر واحد فقط من الجدول (منو يعرف ليش؟؟)

المتغيرات n,a,t,e,m هي متغيرات حرفية (لماذا بعضها ذات طول 20 وبعضها 30 وواحدة 50؟؟؟)

fetch curs into n,a,t,e,m;

لاحظ أن في جملة select أستدعينا جميع البيانات وليس الأسم ولذلك يجب في جملة fetch أن نضع قيمة المتغير curs في أكثر من متغيير وهي n للإسم وa للعنوان و t للتلفون و e للإيميل و m للملاحظات.

exit when curs%notfound;

شرط الخروج من الدوارة.

:view.name:=n;

وتعني إجعل قيمة العنصر name الموجود في بلك البيانات view يساوي المتغير n

وهكذا لبقية الأسطر الأربعة الأخرى.

الأن إحفظ البرنامج ثم نفذه.

اختار بالماوس على أحد الأسماء(ماذا ينتج؟)

أليست نتيجة رائعة تظهر جميع محتويات هذا الاسم في بلوك البيانات.

04_06_06_12_33_31_1149406411search73ag.jpg

الآن وبعد أن انتهينا من عملية العرض بالشكل المناسب ننتقل إلى عملية البحث عن إسم معين.

هل تذكروا في بداية الدرس الثالث عندما أنشئنا عنصر نص Text Item واعطيناه الإسم Search

الأن سوف ننشئ ترايجر أسفل هذا العنصر تحت الحدث POST-CHANGE أي عند حدوث تغيير في هذا العنصر

ونكتب فيه الكود المبين في الصورة التالية:

04_06_06_12_34_18_1149406458search83ry.jpg

الكود هذا لقد مر علينا سابقاً غير ان هناك فارق بيسط فيه وهي جملة select

select name from phone where substr(name,1,length(:view.search))=:view.search;

أي اعرض جميع الأسماء من الجدول phone تحت الشرط التالي:

substr(name,1,length(:view.search))

substr هي دالة إستقطاع جزء من النص النص المستقطع هو name أي الاسم من الجدول phone وبداية الأستقطاع هو من الحرف الأول (1) وبطول length(:view.search) أي بطول عدد الحروف الموجودة في العنصر search الموجود في بلك البيانات view

فإذا هذا الجزء المستقطع من الاسم يساوي محتوي العنصر search (=:view.search)

فإن الجملة select سوف ترجع بإسم هذا الحقل (إن شاء الله مفهوم..)

بقية الكود تم شرح مثله في درس سابق.

الأن إحفظ البرنامج ثم نفذه.

في عنصر النص search أكتب أي اسم او حرف لبداية إسم تريد البحث عنه

وليكن مثلا حرف m ثم إضغط إنتر (ماهي النتيجة؟؟)

القائمة عرضة فقط الأسماء التي تبدأ بحرف m إنقر على أي إسم لعرض بياناته.

04_06_06_12_34_53_1149406493search96kt.jpg

لاحظ أن حالة ألاحرف حساسة أي البحث عن m يختلف عن البحث عن M (كيف يمكن تفادي هذه المشكلة..؟؟؟؟؟)

لتفادي هذه المشكلة غير الكود

select name from phone where substr(name,1,length(:view.search))=:view.search;

إلى الكود

cursor curs is select name from tel where lower(substr(name,1,length(:view.tis)))lower(:view.tis);

يمكن أن تستخدم الدالة Upper بدلاً من lower

الأمر بسيط للغاية lower تحول جميع الأحرف إلى أحرف صغيرة

و upper تحول جميع الأحرف إلى أحرف كبيرة

إحفظ البرنامج ونفذ مرة أخرى

أكتب الان m أو M ثم إضغط إنتر (نتيجة رائعة)

الان أكتب أكثر من حرف وليكن مثلاً moh ثم إنتر

تم عرض فقط الأسماء التي تبدأ بالحروف moh

وبذلك نكون قد أنتهينا من عملية البحث (أي إقتراح أخر يمكنكم طرحة لنحله معاً)

في الدرس القادم سوف نبدأ بالتمهيد لعمليات الحذف والإضافة.

تم تعديل بواسطه walcom
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مرحبا

في هذا الدرس سوف نقوم بالتمهيد للعميات الأخرى كالحذف والإضافة والتعديل

وبما أن الشاشة التي كوناها سابقاً هي الشاشة الرئيسية

فلذلك سوف نضطر إلى إضافة مجموعة من الأزرار للقيام بالعمليات الإضافة والحذف والتعديل وأيضاً الخروج من البرنامج

فأول خطوة سوف نخطوها اليوم هي إضافة مجموعة من الأزرار (Buttons)

وسوف نحصر هذه الأزرار في إطار مناسب إذا قم بالتالي:

1- على الـ Canver المسمى CNVVIEW إنشئ إطار ثم أربعة Buttons

2- غير في خصائص الإطار بحيث تكون قيمة الخاصية Frame Titel تساوي لاشيئ (أي فارغ)

3- غير في خصائص أول Button بحيث:

Name= B_Exit

Label= Exit

Canvas= CNVVIEW

وسيكون هذا هو زر الخروج من البرنامج.

4- غير في خصائص ثاني Button بحيث:

Name= B_Delete

Label= Delete

Canvas= CNVVIEW

وسيكون هذا هو زر حذف قيد.

5- غير في خصائص ثالث Button بحيث:

Name= B_Edit

Label= Edit

Canvas= CNVVIEW

وسيكون هذا هو زر تعديل قيد.

6- غير في خصائص رابع Button بحيث:

Name= B_Add

Label= Add

Canvas= CNVVIEW

وسيكون هذا هو زر إضافة قيد.

04_06_06_12_36_39_1149406599exit16go.jpg

الأن يجب أن نبرمج كل زر بحيث يقوم بوظيفته:

أمر الخروج من البرنامج (Exit) نضيف ترايجر أسفل الزر Exit وبالحدث WHEN-BUTTON-PRESSED ونكتب فيه الكود التالي:

Exit_form;

وهذا الكود لايحتاج إلى شرح (وظيفته الخروج من البرنامج).

إحفظ البرنامج ثم نفذه

إضغط على أي Button غير Exit تلاحظ لايؤثر في شيئ لإنها تخلو من البرمجة، لكن إضغط على زر exit تلاحظ خروجك من البرنامج بسبب أن الترايجر يوجهها الى هذا الأمر.

الأن الـ Button الثاني والخاص بحذف عنصر.

من البديهيات المعروفة انه قبل حذف أي عنصر فإنه يجب التنبيه بذلك أي يجب عرض رسالة تحذيرية تخبرنا بالتأكيد على الحذف أم لا.

ولعرض هذه الرسالة سوف نحتاج إلى إضافة Alert .

أضف Alert جديد وغير في خصائصه كما يلي:

Name= MSG

Alert Style= Caution أي رسالة تحذيرية

Button 1 Label= Yes أي ان الزر الأول في الرسالة يكتب فيه كلمة Yes

Button 2 Label= No أي الزر الثاني في الرسالة يكتب فيه كلمة No

Button 3 Label إجعله فارغا لإننا لا نحتاج إلى زر ثالث

Default Alert Button= Button 2 أي إجعل الزر الثاني هو الزر الإفتراضي (النشط)

04_06_06_12_37_03_1149406623exit_6za.jpg

الأن نرجع إلى برمجة الزر Delete

ننشئ ترايجر جديد أسفل الزر delete عند الحدث WHEN-BUTTON-PRESSED ونكتب فيه الكود التالي:

if :view.name is not null then
set_alert_property('msg',title,'Delete');
set_alert_property('msg',alert_message_text,'Are You Sure to Delete ' || :view.name);
if show_alert('msg')=alert_button1 then
delete from phone where name=(:view.name);
commit_form;
end if;
end if;

شرح الكود:

السطر الأول يوجد به شرط IF والشرط (هل قيمة العنصر name في البلوك View يكون فارغ أي لا يحتوي على أي حرف) فإذا تحقق هذا الشرط فسوف يتم تنفيذ السطور التالية حتى نهاية جملة IF والتي تنتهي بالجملة End if في آخر سطر في الكود.

أما إذا لم يتحقق هذا الشرط فلن يتم تنفيذ شيئ.

السطر الثاني يتم فيه تغيير في خصائص الـ Alert التي سميناها MSG أي خصائص رسالةالتنبيه

حيث يتم تغيير عنوان (Titel) الرسالة (MSG) إلى الكلمة Delete.

السطر الثالث يتم فيه أيضا تغيير في خصائص الـ Alert التي سميناها MSG أي خصائص رسالةالتنبيه

حيث يتم وضع نص (alert_message_text) الرسالة (MSG) إلى الجملة:

Are You Sure to Delete يلي هذه الرسالة يضيف ( || علامة الإضافة) يضيف محتوي العنصر name من البلك VIEW.

فإذا كان محتوى العنصر name هو الإسم Mohammed فسوف يكون نص الرسلة هو:

Are You Sure to Delete Mohammed

السطر الرابع: فيه شرط If يقول show_alert أي إعرض الرسالة MSG

فإذا كان الإختيار على الزر الأول(alert_button1 والذي حددنها سابقا في خصائص الـ Alert بالقيمة Yes)

فإذا كان الإختيار على هذا الزر (أي تم ضغط هذا الزر) فإن البرنامج سوف يقوم بتنفيذ الأسطر التي تلي هذا الشرط

والتي تنتهي بالجملة End If في السطر القبل الأخير

أما إذا كان الضغط على الزر No فإن البرنامج لن يفعل شيئ.

السطر الخامس: وهي أهم خطوة أمر الحذف وهو أحذف(Delete) من الجدول Phone عندما يكون الأسم يساوي محتوي العنصر name في البلوك View.

السطر السادس: أمر التثبيت. وذلك من أجل تثبيت الحذف.

الأن إحفظ البرنامج.

طبعاً عملية الحذف الأن تقريباً أكتملت ولكن ينقصها بعض التعديلات من أجل الشكل فقط سوف نناقشها بعد تنفيذ البرنامج.

الأن نفذ البرنامج:

إختار أحد الأسماء من القائمة وليكن مثلاً الإسم amer طبعاً عند إختياره سوف تظهر جميع بياناته (نعرفها سابقاً)

الأن إضغط على الزر delete سوف تظهر مباشرتاً الرسالة:

04_06_06_12_37_53_1149406673delete11bd.jpg

لإلغاء عملية الحذف إختارعلى الزر No أو إو إضغط على إنتر Enter من لوحة المفاتيح لإن الزر No هو الزر الفعال حالياً

أما إذا أخترت Yes فسوف يتم حذف القيد amer

الأن بعد أن حذفت القيد amer تلاحظ أن القيد مازال موجوداً في القائمة، ولكنه قد حذف من الجدول وللتأكد من عملية الحف

إخرج من البرنامج بالضغط على الزر Exit ثم نفذه من جديد ستلاحظ بأن القيد amer غير موجود ضمن القائمة.

ولكن كيف يمكن أن أجعل العنصر ينحذف حتى من القائمة بعد الحذف مباشرتاً وبدون خروج من البرنامج؟؟؟

لحل هذا المشكلة إنتظروا الدرس القادم

ملاحظة:

يمكنك إضافة القيود التي حذفتها يدوياً بأن تقص الكود التالي وتلصقه في SQL *Plus وذلك من أجل أن تتمرن أكثر على عملية الحف.

delete from phone;
insert into phone
values
('Ahmed','Yemen','123321',[email protected]','');
insert into phone
values
('Mohammed','Iraq','2258647',[email protected]','');
insert into phone
values
('amer','Sudia','58694725',[email protected]','');
insert into phone
values
('moner','Egypt','55886644',[email protected]','');
insert into phone
values
('Mohsen','Yemen','123355',[email protected]','');
insert into phone
values
('moneraa','Iraq','5541857',[email protected]','');
commit;

تم تعديل بواسطه walcom
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سوف نكمل شرحنا اليوم

أخر نقطة توقفنا عندها في الدرس السابق هى

ولكن كيف يمكن أن أجعل العنصر ينحذف حتى من القائمة بعد الحذف مباشرتاً وبدون خروج من البرنامج؟؟؟

أي عندما أحذف العنصر يجب أن ينحذف من القائمة وليس فقط من الجدول. حتى يبين للجميع بأن الإسم قد تم حذفه.

أتذكرون الترايجر التي كوناه أسفل الفورم الرئيسي والذي يتنفذ عند تنفيذ البرنامج (ماهي وظيفة هذا الترايجر؟)

declare
cursor curs is select name from phone;
a varchar(30);
n number:=0;
begin
set_window_property('window1',window_state,maximize);
clear_list('listview');
open curs;
loop
fetch curs into a;
exit when curs%notfound;
n:=n+1;
add_list_element('listview',n,a,a);
end loop;
end;

كما شرحناه سابقاً فإن وظيفته هي إستدعاء جميع الأسماء الموجودة في الجدول وعرضها في القائمة.

إذا بماذا يفيدنا هذا الترايجر؟؟؟

هذا يفيدنا بأن نستدعيه بعد كل عملية حذف حتى يستدعي جميع الأسماء الموجودة في الجدول.(طبعاً الإسم المحذوف غير موجود في الجدول لإنه أنحذف)

وبذلك فسوف لن يتم عرض الإسم المحذف في القائمة.

ويبقى السؤال الأن كيف أقوم بإستدعاء هذا الترايجر بعد كل عملية حذف.

سوف نحتاج هنا إلى إجراء عام يمكن إإستدعاه من أي ترايجر بمجرد فقط ذكر إسمه. (كيف ذلك؟؟).

1- إختار Program Units

2- إختار إضافة

3- إختار Procedure

4- إكتب إسم الإجراء بجوار الحقل name وليكن Refresh

5- إختار Ok

04_06_06_12_39_54_1149406794delete_1pu.jpg

سوف تظهر نافذة جديدة يوجد بها بعض الأسطر

أضف الكود التالي إلى هذه النافذه بحيث تصبح بالشكل التالي:

04_06_06_12_40_03_1149406803delete35hc.jpg

كما تلاحظ هو نفس الكود الموجود بالترايجر أسفل الفورم الرئيسي ولكن هناك بعض الإختلافات لإن هذا هنا عبارة عن إجراء قابل للإستدعاء من قبل أي ترايجر أخر.

الأن ماهي التعديلات التي سوف نجريها على الترايجر الأول الذي أسفل الفورم الرئيسي؟؟؟

وماهي التغيرات التي سوف نجريها على ترايجر الحذف؟؟؟

التعديلات ستكون كما في الشكل التالي:

04_06_06_12_40_44_1149406844delete48st.jpg

أعتقد بأن التغيرات التي أجريناها لاتحتاج إلى شرح أكثر من هذا؟

الان إحفظ البرنامج ثم نفذه.

ثم حاول أن تحذف أحد القيود؟؟

فعلاً لقد تم حذف الإسم حتى من القائمة.

ولكن بقت مشكلة بسيطة جدأ وهي أن بيانات الشخص المحذوف تبقى في بلك البيانات. (كيف يمكن معالجة هذه المشكلة البسيطة؟؟)ز

الحل بسيط جداً..

في ترايجر الحذف أضف الأسطر التالية:

  :view.name:='';
:view.Address:='';
:view.Tel:='';
:view.Email:='';
:view.Memo:='';

وظيفة هذه الأسطر هو جعل قيم بلك البيانات فارغة.

04_06_06_12_41_42_1149406902delete5_dj.jpg

الأن إحفظ البرنامج ثم نفذه.

ثم حاول حذف أحد الأسماء.. (لاتوجد مشاكل الأن.. :rolleyes: .)

أنتهى درس الحذف وبنهايتهة ينتهي درس اليوم ولم يبقى لنا سوي التعديل والإضافة

موعدنا الدرس القادم مع التعديل على البيانات.

تم تعديل بواسطه walcom
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مرحبا...

درسنا اليوم هو عن التعديل على البيانات

سوف نقوم في هذا الدرس بإنشاء بلك بيانات جديد وCanvas جديد

بلك البيانات سوف نربطه بالجدول PHONE

إذا أول خطوة هي أنشئ بلك بيانات جديد (لكيفية إنشاء بلك البيانات راجع الدرس الثاني..)

وخطوات إنشاء بلك البيانات هي كالتالي ( للتذكير):

1- إختار Data Blocks.

2- إختار إضافة.

3- User The Data Block Wizard ثم O.K

4- Display the Page Next time ثم التالي.

5- Table Or View ثم التالي.

6- Browse..

7- أدخل اليوزر نيم والباسورد (system/manager) ثم connect

8- إختار الجدول PHONE ثم O.K

9- إختار الكل ثم التالي.

10- التالي.

11- Create the data block, then call the Layout Wizard. ثم نهاية.

12- Display the Page Next time ثم التالي.

13- Canvas = New Canves

Type = Content ثم التالي.

14- إختار الكل ثم التالي.

15- التالي.

16- Form ثم التالي.

17- التالي.

18- نهاية.

الأن قم بتغيير الخصائص كما يلي:

1- الداتا بلوك Phone

name= EDIT

2- CANVAS

name= CNVEDIT

3- FRAME الموجود في CNVEDIT

Update Layout= LOCKED

4- حدد العناصر NAME,ADDRESS,TEL,EMAIL,MEMO وغير في خصائصهم كالتالي:

Reading Order= Left To Right

الأن أضيف زرين (BUTTONs) إلى الداتا بلك EDIT

وغير خصائصهما كما يلي:

1- الزر الأول:

name= P_CANCEL

label= CANCEL

2- الزر الثاني:

name= P_OK

label= OK

الأن أضيف مربع نص في CNVEDIT وأكتب فيه الكلمة EDIT

إجعل شاشتك تظهر بالشكل التالي:

04_06_06_12_42_58_1149406978edit1_ps.jpg

الأن أنتهينا من التصميم المرئي لبلك البيانات الخاص بشاشة التعديل EDIT

وبقى فقط الجزئ البرمجي...

إحفظ برنامج ثم نفذ..

تلاحظ بأن شاشة التعديل هي التي ظهرت وليست الشاشة الرئيسية التي أنشئناها في الدروس السابقة.

كيف أجعل شاشة العرض هي التي تظهر بالبداية؟؟؟

إذهب الى الترايجر الذي أسفل الفورم الرئيسيى والذي عدلنا به في الدرس الماضي والمسمى بـ

WHEN-NEW-FORM-INSTANCE

وأضف الكود التالي في نهايته:

GO_BLOCK('VIEW');

وهذا الكود يعني إذهب وأعرض بلك البيانات الذي أسمه VIEW

الأن إحفظ البرنامج ونفذ.

فعلاً ظهرت الأن شاشة العرض الأساسية.

إضغط على الزر Edit (لا يحصل شيئ!!!)

إختار على أحد الأسماء من القائمة ثم إضغط على الزر Edit مرة أخرى (أيضاً لا يحصل شيئ!!!!!)

طبعاً لايحصل شيئ لإن ترايجر زر التعديل لم نوجهه حتى الأن

إذا أخرج من شاشة التفيذ وأضيف ترايجر جديد أسفل زر التعديل Edit في بلك البيانات VIEW

ويكون تحت الحدث WHEN-BUTTON-PRESSED وأكتب فيه الكود التالي:

if :view.name is not null then
go_block('edit');
set_block_property('edit',default_where,'name=:view.name');
execute_query;
end if;

شرح الكود:

يوجد بالكود شرط وهو يجب أن لا يكون العنصر name في بلك البيانات VIEW فارغاً

لأجل تنفيذ الأسطر التالية حتى نهاية جملة end if (تذكر هذا الشرط جيداً..)

السطر الثاني واضح وهو أمر الذهاب وعرض بلك البيانات EDIT

السطر الثالث وهو تغيير في خصائص بلك البيانات EDIT بحيث يصبح يحتوي على الإستعلام التالي

الاسم name يساوي العنصر name في بلك البيانات VIEW

السطر الرابع وهو أمر تنفيذ الإستعلام

هذين السطرين الثالث والرابع وظيفتهما هو عرض جميع بيانات القيد الذي أسمة يساوي الإسم الموجود في بلك البيانات VIEW

الأن نضيف ترايجر أخر في بلك البيانات EDIT تحت الزر CANCEL

وبالحدث WHEN-BUTTON-PRESSED ونكتب فيه الكود التالي:

go_block('view');

واضح معناه أي الرجوع وعرض بلك البيانات VIEW وبدون حفظ أي تغيير.

وأخيراً سوف نظيف ترايجر ثالث في بلك البيانات EDIT تحت الزر OK

وبالحدث WHEN-BUTTON-PRESSED ونكتب فيه الكود التالي:

commit_form;
go_block('view');
refresh;

السطر الأول واضح جداً وهو من أجل تثبيت البيانات التي غيرنا فيها وحفظها في الجدول.

السطر الثاني أوضح من الأول، وهو من أجل الرجوع إلى بلك البيانات الرئيسي VIEW

أما السطر الثالث فهو موجه لكم أنتم لماذا أستخدمناه وماهي وظيفته؟؟؟؟؟ (راجع الدروس السابقة).

الآن إحفظ البرنامج ثم نفذه.

1- قبل أن تختار أي إسم من القائمة إضغط على الزر Edit (ماذا يحصل؟)

لا يحصل شيئ وذلك بسبب ان العنصر NAME في بلك البيانات VIEW فارغاً

بينما الشرط في الترايجر يقول يجب أن يكون الاسم في بلك البيانات VIEW غير فارغ. (ألم أقل لكم تذكروا هذا الشرط جيداً)

(كيف أجعله يظهر رسالة تخبرني بأنه لايوجد إسم في العنصر name ؟؟)

2- الأن إختار أحد الأسماء الذي تريد أن تعدل في بياناته من القائمة ثم إضغط على Edit

سوف تظهر شاشة التعديل وبه جميع بيانات ذلك الشخص. غير بياناته.

3- إذا ضغطت على Cancel فلن يتم حفظ التغيرات.

4- أما إذا ضغط على OK فسوف يتم حفظ التعديلات.

مبروك لقد أنتهينا من درس التعديل على البيانات.

درسنا القادم هو إضافة بيان (قيد) جديد...

تم تعديل بواسطه walcom
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك اخي اسكندر . واعانك الله وجزاك على كل حرف الف حسنه وعن كل قارئ مليون حسنه ..

جزاك الله الف خير الجزاء .. وزاد الرجال من امثالك .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أمين يارب العالمين

أشكرك اخي المشرف ANSI على متابعتك...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ما زلت عند رأئي ... موضوع متميز .. واصل اخي الخبـــير اسكندر .. و سأحاول ان اطبق في اقرب وقت (كنت من اشد المعجبين بأوراكل و ديفلوبر لكن المسارات احياناً تأخدنا بعيداً عنما نحن !!! ) و مبروك على الترقية مرة اخرى :)

بنت اليمن ،،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أشكرك جداً بنت اليمن على مدحك للموضوع

وإن شاء الله يكون الموضوع بقدر المدح

وأشكرك أيضاً على التهنئة :rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بسم الله ما شاء الله تبارك الرحمن

اخ اسكندر عفوا الخبير اسكندر :rolleyes:

من يوميين فقط عندما حصلت على هذا المنتدى الرائع وسجلت فيه موضوعك استقبل اول مشاركة لي B) ..

واصل ,.. فمثل هذة المواضيع لها اقبال كبير وفى نفس الوقت موضوعك هو بمثابة درس وفى الدرس نحن لا نستطيع ان نقاطع المدرس :rolleyes: ..

وشكراً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من الذي بيتابع انا او الاخت بنت اليمن . :)

اهلا وسهلا بك اخ Has2 .. ارجو ان تستفد وتفيد. ونشوفك خبير جديد .

تابع دروسك يا خبير ........

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مرحبا..

إن شاء الله الكل متابع أخي المشرف وأشكركم على متابعتكم وتشجيعكم.

وأشكر ايضا أخي Has2 على المشاركة وأهلا وسهلاً بك معنا.

درسنا اليوم هو عملية إضافة قيد جديد

ولعمل ذلك سوف نحتاج إلى بلك بيانات جديد خاص بالإضافة وسوف يكون إسمه هو ADD وسوف يكون في Canvas جديد وسيكون إسم الـ Canvas هو CNVADD (أتفقنا..).

أعتقد هذه الخطوات أصبحت بسيطة ولكن للتذكير سوف أسردها لكم وهي:

1- إختار Data Blocks.

2- إختار إضافة.

3- User The Data Block Wizard ثم O.K

4- Display the Page Next time ثم التالي.

5- Table Or View ثم التالي.

6- Browse..

7- أدخل اليوزر نيم والباسورد (system/manager) ثم connect (إذا مرتبط سابقاً فلن تظهر هذه الخطوة.)

8- إختار الجدول PHONE ثم O.K

9- إختار الكل ثم التالي.

10- التالي.

11- Create the data block, then call the Layout Wizard. ثم نهاية.

12- Display the Page Next time ثم التالي.

13- Canvas = New Canves

Type = Content ثم التالي.

14- إختار الكل ثم التالي.

15- التالي.

16- Form ثم التالي.

17- التالي.

18- نهاية.

الأن قم بتغيير الخصائص كما يلي:

1- الداتا بلوك Phone

name= ADD

2- CANVAS

name= CNVADD

3- FRAME الموجود في CNVADD

Update Layout= LOCKED

4- حدد العناصر NAME,ADDRESS,TEL,EMAIL,MEMO من بللك البيانات ADD وغير في خصائصهم كالتالي:

Reading Order= Left To Right

الأن أضيف زرين (BUTTONs) إلى الداتا بلك ADD

وغير خصائصهما كما يلي:

1- الزر الأول:

name= P_CANCEL

label= CANCEL

2- الزر الثاني:

name= P_SAVE

label= SAVE

الأن أضيف مربع نص في CNVEDIT وأكتب فيه الكلمة ADD

إجعل شاشتك تظهر بالشكل التالي:

04_06_06_12_45_30_1149407130add17oy.jpg

الأن أضيف ترايجر على الزر Add الموجود في بلك البيانات VIEW وبالحدث WHEN-BUTTON-PRESSED واكتب فيه الكود التالي:

Go_block('add');
create_record

الكود هذا أكيد نعرف وظيفته جيداً وهي لإستدعاء وعرض بلك البيانات الذي سميناه ADD

ثم في السطر الثاني فإنه يقوم بإضافة قيد جديد فارغ.

أما الزر CANCEL الموجود في بلك البيانات ADD أضيف إليه ترايجر وبالحدث WHEN-BUTTON-PRESSED وأكتب فيه الكود التالي:

Delete_record;
Go_block('View');

أيضاً واضح وهو حذف العنصر الذي كنا قدر حاولنا إضافته.

وفي السطر الثاني الرجوع إلى بلك البيانات الرئيسيى VIEW.

أما الزر SAVE الموجود في بلك البيانات ADD فسوف نضيف إليه ترايجر وبالحدث WHEN-BUTTON-PRESSED ونكتب فيه الكود التالي:

Commit_form;
Go_block('view');
Refresh;

وأعتقد أيضاً واضح شرحة فكل هذا قد مر علينا سابقاً (راجع الدرس السابق)

الأن إحفظ البرنامج ونفذه.

إضغط على الزر Add

سوف تظهر لك نافذة الإضافة.

أضف إسم جديد مع بياناته ثم إضغط الزر CANCEL أي عدم الحفظ

تلاحظ عدم إضافة أي إسم للقائمة.

ولكن حاول إضافة إسم جديد مع بياناته ثم إضغط على الزر SAVE (ما تلاحظ؟)

لقد أنضاف الإسم إلى القائمة ويمكنك النقر عليه لرؤية جميع بياناته التي أضفتها.

ويمكنك تكرار العملية لإضافة إسم آخر.. وهكذا

وبذلك نكون قد أنتهينا من برنامج دليل التلفونات والحمد لله..

برنامج بسيط جداً ولكنه يعتبر دفعة قوية للمبتدئين بالأوراكل ديفلوبر...

ولن أرفق البرنامج لإنه يجب عليك تطبيق الخطوات بنفسك.

والذي يريد تطبيق البرنامج عليه أن يفهم كل خطة يقوم بها وأنا مستعد للإجابه على جميع الإستفسارت الخاصة بالبرنامج.

وقريباً إن شاء الله سوف أطرح مجموعة من الأسئلة لكيفية تطوير البرنامج... والذي عنده فكرة جيده عليه طرحها لمناقشتها وتطبيقها إن أمكن.

كمثلاُ كيف أجعل البرنامج يبحث عن الرقم وليس عن الإسم حسب الإختيار...(أي نجعله متعدد البحث أما عن الإسم أو عن الرقم )

حاولوا أولاً تطبيق هذا البرنامج وفهم كل خطوة فيه حتى ننتقل إلى الخطوة التالية وهي خطوة تطوير البرنامج.

اترككم في رعاية الله.

وأنا متواجد دائما للرد على إستفسارتكم.

تحياتي....

إسكندر

تم تعديل بواسطه walcom
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مرحبا من جديد..

اليوم سأطرح بعض من الأسئلة:

السؤال الأول

تطوير البحث كيف يمكن البحث عن أي حرف أو مجموعة حروف حتى لو كانت في وسط الإسم وليس من الظروري أن تكون في بداية الإسم.

السؤال الثاني

تطوير البحث كيف يمكن عرض نتائج البحث بمجرد كتابة أي حرف. أي لانحتاج لإن نضغط على إنتر

فمثلاُ عن كتابة m يعرض جميع الإسماء المحتوية على الحرف m مباشرتاً دون الضغط على إنتر

وعند إلحاقها بحرف أخر وليكن مثلاُ o يعرض مباشرتاً جميع الأسماء التي تحتوي على الحرفين mo وهكذا...

منتظر ردودكم للإجابة على هذه الأسئلة

حاولوا حتى وإن أخطأتم. فليس من العيب أن تحاول وتخطئ العيب أنك لا تحاول أبداً..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اين الحلول

مش معقول ولا واحد عرف يجاوب على هذه الأسئلة البسيطة

لتسهيل الحل

السؤال الأول غير في جملة select واستخدم المعامل like :D

والسؤال الثاني غير نوع العنصرItem Type :rolleyes: :blink:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ماشاء الله تبارك الله

للاسف كنت منقطع عن المنتدى

وتفاجأت عن موضوع تصميم برنامج عن طريق ال FORM

فعلا هذا القسم يفتقد للبرامج وهجرة مبرمجي اوركل من القسم

وباذن الله من اليوم نبداء خطوة خطوة معاك

وشكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

:D يعني انت مصمم انك ما تواصل الا بالاجوبه ..

الاول :

SELECT ename FROM emp WHERE ename LIKE 'S%';

الثاني :

اضغط على السهم الاحمر

والان واصل الدروس :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .