إسكندر بتاريخ: 16 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 16 نوفمبر 2005 مرحبا..كمشاركة أولى لي في هذا المنتدى أود أن أضيف برنامج..ولكن لن أضع البرنامج إلا في نهاية شرحي للبرنامجوسوف استمر في شرح هذا البرنامج درس درس وهذا البرنامج هوتصميم برنامج لدليل التلفوناتوسوف اشرح فيه كل خطوة أقوم بها إن شاء اللهطبعا البرنامج بسيط جدا وليس معقد ويتكون فقط من جدول واحد فأرجو تفاعلكم معي أولا سوف أشرح عمل البرنامج:البرنامج طبعاً للمبتدئين في أوراكل ديلفلوبر وهو يتكون من ثلاثة إطارات:الإطار الرئيسي وبه البحث عن البيانات وعرضها ومن هذا الإطار يمكن الحذف أيضاًوهذا الإطار هو الذي ينقلنا إلى بقية الإطارات الأخرى.الإطار الثاني إطار الإضافة(إضافة بيان جديد) الإطار الثالث إطار التحديث بالبيانات الموجودة.ونبدأ على بركة الله ولكن أهم شيئ تفاعلكم ..تكوين الجدول:وهو عبارة عن جدول واحد فقط يوجد به البيانات التالية:الإسمName ، العنوان Address ، التلفون Tel ، الإيميل Email ، ملاحظات Memoإفتح برنامج SQL * PLUS وإدخل بالمستخدم system/managerوإنشئ الجدول phone كما يلي: CREATE TABLE phone( name varchar(30) primary key, address varchar(20), tel varchar(20), email varchar(30), memo varchar(50)); لاحظ أن الإسم هو المفتاح الأساسي للجدول أي لايسمح أن يترك الأسم فارغا ولا يسمح أيضاً بإدخال الإسم أكثر من مرة (عدم تشابه الأسماء).الأن ندخل مجموعة من القيود من أجل أن نطبق عليه بعض الأمثلة في البرنامج: insert into phone (name,address,tel,email,memo) values ('Ahmed','Yemen','123321','[email protected]',''); insert into phone (name,address,tel,email,memo) values ('Mohammed','Iraq','2258647','[email protected]',''); insert into phone (name,address,tel,email,memo) values ('amer','Sudia','58694725','[email protected]',''); insert into phone (name,address,tel,email,memo) values ('moner','Egypt','55886644','[email protected]',''); insert into phone (name,address,tel,email,memo) values ('Mohsen','Yemen','123355','[email protected]',''); insert into phone (name,address,tel,email,memo) values ('moneraa','Iraq','5541857','[email protected]',''); بعد هذا سوف نبدأ بالدفلوبر ونبدأ بتصميم الإطاراتمنتظر تفاعلكم مع الموضوع لكي أكملة.. 5 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 16 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 16 نوفمبر 2005 مرحبا بك معنا بالمنتدى اسلوبك جديد وبسيط لعرض البرنامج .. ارجوا ان نستمر لافادة اعضاء المنتدى .. لقد حددت ان الاسم سيكون هو مفتاح الجدول .. وهذا مع اللغه الانجليزيه لاتوجد تكرار ولكن ماذا مع الاسماء باللغه العربيه .... كيف يمكن تفادى حروف الادخال مثل أ الف همزه ... ا الف بدون همزه ومثل ايضا حرف الهاء قد يكون ه هاء بدون نقطتين أو ة هاء فوقها نقطتين ...أحمد ........ أحمـــــــد أحمد ......... احمدحمزه .......... حمزةوحروف اخرى كثيرة مثل المد فى أحمــــــــــــــد بداية موفقه ونحن معك للنهاية ان شاء الله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ahmedelhamahmy بتاريخ: 16 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 16 نوفمبر 2005 أولا جزاك الله خيراثانيا كان لى بعض التعليق1- لماذا لم تجعل لكل إسم مسجل فى قاعده بيانات سجل الهاتف كود له ويكون هو المفتاح الرئيسى بدلا من ان يكون المفتاح الرئيسى هو الاسمخاصه انه من الممكن ان يتكرر الاسم مرتان2- أقترح إضافة نموزج ترحيبى فى البدايةمشكور وبإنتظار التالى ولا تغيب علينا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 17 نوفمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 17 نوفمبر 2005 أشكرك أخ أمجد على المتابعة والتنبيه على هذه الفقرةطبعاً يمكن حل هذه المشكلة أثناء عملية البحث أو عند إضافة إسم جديد وذلك برمجياًفأنت تعلم بأنه لا توجد دالة تقوم بتفادي هذه المشكلةولكن يمكن إستخدام الدالة Replace أي عند البحث او عند الإضافة للجدول يجب تغييرالإسم الى شكل عام وثابت لكل الأسماءفمثلاً نقوم بعمل التالي لكل أسم في الجدول:أولاً نقوم بخزن الأسم في متغير وليكن X مثلاًثانياً نقوم بتغيير قيمة X كما يلي: x:=Replace('x','ـ',''); x:=Replace('x','ا','أ'); x:=Replace('x','ا','إ'); x:=Replace('x','ه','ة'); وهكذا لجميع الإحتمالات الممكنة.ثالثاً نقوم بمقارنة قيمة X الجديدة مع الإسم الذي تبحث عنه أو الذي تريد إضافته.ونقوم بهذه الخطوات بداخل حلقة تكرار لكي يتم تطبيقها لجميع الأسماء الموجودة في الجدولوبذلك نكون قد تفادينا هذه المشكلة.كلك أيمن ثم Save Traget As لتطبيق المثال السابقوإن شاء الله سوف نستخدم هذه الطريقة في هذا البرنامج لتوضح الفكرة أكثر..الأخ ahmedelhamahmyفأشكرك على ملاحظاتك.ولكن كنت قد فكرت بطريقة إضافة كود لكل إسم ولكن وجدت ان هذا الكود لن يحل مشكلة التكرار ولذلك لن نحتاج إلى هذا الكود فهو يأخذ مساحة في قاعدة البيانات ولا يحل مشكلتنا.لإن الكود صحيح لن يتكرر لكن الإسم سوف يتكررفمثلاُ الاسم محمد قد يحمل الكود رقم 5 وكذلك قد يحمل الكود رقم 9 في نفس الوقتولكن إستخدام الدالة Replace قد تحل مشكلة تكرار الأسماء نوعاً ماأما بالنسبة للشاشة الترحيبية فسوف نستخدمها إن شاء الله في برنامجنا هذاوبما أن الشاشة الترحيبة هي من الأشياء الجمالية والشكلية في البرنامج فلذلك سوف نتطرق لها في نهاية البرنامج إذا بقى لنا متسع من الوقت وسوف نركز حالياً على الأشياء الأساسية في البرنامج وبالتفصيل.وأشكركم جميعاً على تفاعلكم الجيد هذا مع البرنامج اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 17 نوفمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 17 نوفمبر 2005 ولنبدأ على بركة الله في درس اليوم:1- افتح برنامج Oracle Form Builder2- من نافذة 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 سوف يظهر لنا في العمود Available Columns أسماء جميع الحقول التي كوناها في الجدول.إختار الجميع ليتم نقلهن جميعاً إلى العمود Database Item ثم التالي.5- إختار Create the data block, then call the Layout Wizard ثم نهايةوذلك من أجل إستدعاء Wizard أخر من أجل عمل تصميم لمحتويات بلك البيانات.6- من الـ Wizard الجديد إختار التالي ثم إختار New Canvas أي ساحة عمل جديدة وإختار النوع Content- ثم إختار الكل لنقل حقول الجدول إلى العمود Displayed Items من أجل عرض هذه الحقول في ساحة العمل Canvas الجديدة ثم إختار التالي.8- إختار التالي مرة أخرى أو يمكنك قبل إختار التالي ان تغير من عناوين الأعمدةوهذا لايؤثر على التسميات الموجودة في الجدول ولكن أفضل تركها كما هي.- بعد إختيار التالي سوف تظهر شاشة لإختار شكل التصميم إختار Form من اجل عرض صف واحد من البياناتأما Tabular من أجل عرض عدد من الصفوف.إختار Form ثم التالي.10- سوف تظهر الآن شاشة من أجل وضع إسم للإطار الذي سوف يحوي بلك البيانات إجعله فارغا ثم التالي ثم نهاية.لقد كونا الآن بلك بيانات مرتبط بقاعدة البيانات وبالجدول phone. يجب أن تكون شاشتك كما في الشكل التالي:سوف يكون هذا Canvas هو الشاشة الأساسية الأولى ومنه سوف يتم الإنتقال إلى بقية الشاشات الأخرى التي سوف نكونها في الدروس التالية..أي أن هذا الـ Canvas سوف يكون فقط لعرض النتائج وليس للإضافة والتعديل.الان نغير من بعض الخصائص:بلك البيانات المسمى حاليا phone سوف نغيير خصائصة كما يلي:إنقر على بلك البيانات phone ثم إضغط المفتاح F4 من أجل عرض نافذة الخصائصغير الخصائص كما يلي:Name: ViewDatabase Data Block: Noوإحذف كلمة phone من أمام الخاصية Query Data Source Name وذلك من أجل ان نجعل بلوك البيانات هذا غير مرتبط بالجدول( قد تتسأل لماذا أجعله غير مربوط بالجدول ومن أين سوف أستدعي البيانات) الجواب البيانات سوف نبحث عنها بإستخدام مربع نص وسيكون بلوك البيانات View فقط لعرض ما حصلنا عليه من البحث (لاتشغل بالك سوف تتوضح الفكرة مع التقدم في الدرس)أما خصائص ساحة العمل Canvas فسوف نغيير خصائصها كما يلي:Name: CNVViewالان حدد العناصر Name,Address,Tel,Email,Memo وذلك بالضغط على كل عنصر مع الإستمرار بالضغط على المفتاح Ctrl ثم إضغط المفتاح F4 لعرض الخصائص وغير كما يلي:Item Type: Display Item وذلك من أجل العرض فقطDatabase item: NoCanvas: CNVVIEWReading Order: Left to Rightأما خصائص FRAME فغيرها كما يلي:Update layout: Locked وذلك من أجل إذا أردت التغيير في حجم الإطار فلا يؤثر على العناصر.الآن إحفظ عملك بالضغط على حفظ وإحفظه بإسم telephoneسوف أتوقف هنا اليوم ومنتظر تفاعلكم مع الدروسوموعدنا قريب بإذن الله ... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
مايسة بتاريخ: 17 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 17 نوفمبر 2005 جزاك الله خيرا على هذا العرض البسيط واتنمنى ان تستمر لاننى لسة مبتدا جديدة فى الاوركل وجزاك الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
alabqari بتاريخ: 18 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 18 نوفمبر 2005 مشكور اخوي على الجهد المبذول و جزاك الله خير و إلى المزيد إنشاء الله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 19 نوفمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 19 نوفمبر 2005 مرحباً..أشكرك أخت مايسة وأشكرك أخ alabqari على ردودكم..وتكملة للدروس فالدرس الثالث اليوم سيكون عن عرض البيانات وعرض نتائج البحث (الأسماء فقط) في قائمة وبمجرد الضغط على إسم شخص من القائمة تظهر التفاصيل في بلك البيانات.(هل وضحت الصور؟؟)ونبدأ على بركة الله..كيف ستكون عملية البحث؟؟؟لعملية البحث نحتاج الى عنصر نص Text Item يتم كتابة حرف أو أكثر من حروف الاسم في عنصر النص هذا فيتم عرض جميع الأسماء (الأسماء فقط) التي تبدأ بهذا الحرف أو الحروف في قائمة. إذا سوف نحتاج أيضاً إلى عنصر القائمة List Item لعرض نتائج البحث..إذا نحتاج الأن لتكوين عنصرين (عنصر نص لكتابة حروف البحث وعنصر القائمة لعرض قائمة بنتائج البحث).1- كون مربع نص Text Item وعنصر قائمة List Item في بلوك البيانات View كما في الصورة التالية:- غير خصائص Text Item كما يلي:Name:SEARCHDatabase Item: NoCanvas:CNVVIEW3- غير خصائص عنصر القائمة List Item كما يلي:Name:LISTVIEW وتذكر هذا الإسم جيداً LISTVIEW سوف نستخدمه كثيراً في هذا الدرس.إضغط على More بجوار الخاصية Elements in List وإحذف أي نص موجود أسفل List Elements ثم موافقوذلك لمنع من إدخال أي بيانات الى القائمة يدوياً. فسوف يتم إدخال البيانات إلى القائمة بالإعتماد على محتوى مربع نص البحث.List Style: TlistDatabase Item: NOCanvas:CNVVIEWDirection: Left To Rightالأن إحفظ البرنامج ثم نفذه المفروض أن تظهر نافذة التنفيذ كما يلي:هذه النافذة كشكل عام تحتاج إلى التعديل عليها بالنقط التالية:1- شريطي الأدوات والقوائم نريد إخفائهم (لن نحتاجهم في هذه الشاشة شاشة العرض والبحث)2- إسم نافذة البرنامج Window1 نريد تغييرها إلى Telephone Guide3- نافذة البرنامج نريدها مكبرة maximizeلتعديل هذه النقاط نقوم بالتالي:1- من خصائص الفورم الرئيسي Telephone نحذف كلمتي DEFAULT&SMARTBAR من أمام الخاصية Menu Module فهاتين الكلمتين تدلان على شريطي القوائم والأدوات.2- من خصائص النافذة Window نغير التالي:Name:Window1Title: Telephone Guide3- أما عملية تكبير النافذة فسوف نحتاج إلى Trigger (ماهو الترايجر؟؟) الترايجر هو عبارة عن أكواد برمجية يتم تنفيذها في أوقات محددة في البرنامج .إذا نكون ترايجر على مستوى الفورم Telephone أي أسفل الفورم TELEPHONE أنقر بالأيمن على Trigger ثم إختارSmartTriggers ثم إختار WHEN-NEW-FORM-INSTANCE أي أن وقت تنفيذ هذا الترايجر هو عند تشغيل الفورم.سوف تفتح نافذة جديدة سوف نكتب بها بعض الأكواد بلغة 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; لفتح المتغير cursloop بداية دوارة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 وإسمه في قاعدة البيانات ايضاً قيمة المتغير aend loop; نهاية الدوارة.end; نهاية البرنامج أو الكود.إن شاء الله يكون هذا الكود واضح على العموم يجب أن يكون لديك فكرة ولو بسيطة عن لغة PL/SQL الان إحفظ البرنامج ثم نفذ ماذا تلاحظ؟؟؟جميع الأسماء التي أضفناها في الدرس الأول قد ظهرت في القائمة listview نتجية جميلة أليس كذلك؟؟ولكن أين بقية البيانات اي العنوان ورقم التلفون وغيرها؟؟؟لكي تظهر هذه البيانات نحتاج ألى ترايجر أخر. (أين نحط هذا الترايجر ومتى يجب أن يتنفذ؟؟؟)هذا ماسوف نتطرق به في الدرس القادم....أترككم في رعاية الله. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
زكي الجعماني بتاريخ: 19 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 19 نوفمبر 2005 مشاركه جيده وفعاله..ونتمنى ان تواصل الدروس ..نحن بانتظارها مع جميع أعضاء المنتدى ..حظ موفق.keep up اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Mugaid بتاريخ: 20 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 20 نوفمبر 2005 يعطيك العافية اخوي على هذة الجهود ....و الى المام دوما.... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 21 نوفمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 21 نوفمبر 2005 مرحباً..أشكر الأخ زكي الجعماني والأخ Mugaid على ردودهم.ماذا نريد أن نفعل في درس اليوم؟؟خطوة أخيرة قبل البدء بعملة البحث..نريد عندما نضغط على إسم شخص من القائمة، تظهر جميع بياناته في بلك البيانات ، وهذا الشيئ يحتاج إلى ماذا؟؟؟نعم برمجة بإستخدام PL/SQL والترايجر.لكن هذه المرة أين سيكون موقع الترايجر؟؟؟التريجر سيكون عند ضغط الماوس على عنصر القائمةإذا سوف ننشئ ترايجر تحت listview وبالحدث WHEN-MOUSE-CLICKأنقر بالز الأيمن على Trigger أسفل listview ثم أختار Smart Triggers ثم إختار Otherسوف تظهر نافذة إختار منها 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وهكذا لبقية الأسطر الأربعة الأخرى.الأن إحفظ البرنامج ثم نفذه.اختار بالماوس على أحد الأسماء(ماذا ينتج؟)أليست نتيجة رائعة تظهر جميع محتويات هذا الاسم في بلوك البيانات.الآن وبعد أن انتهينا من عملية العرض بالشكل المناسب ننتقل إلى عملية البحث عن إسم معين.هل تذكروا في بداية الدرس الثالث عندما أنشئنا عنصر نص Text Item واعطيناه الإسم Searchالأن سوف ننشئ ترايجر أسفل هذا العنصر تحت الحدث POST-CHANGE أي عند حدوث تغيير في هذا العنصرونكتب فيه الكود التالي: declare cursor curs is select name from phone where upper(name)like '%' || upper(:view.search) || '%'; n varchar(30); i number:=0; begin open curs; clear_list ('listview'); loop fetch curs into n; exit when curs%notfound; i:=i+1; add_list_element('listview',i,n,n); end loop; end; الكود هذا لقد مر علينا سابقاً غير ان هناك فارق بيسط فيه وهي جملة select select name from phone where upper(name)like '%' || upper(:view.search) || '%'; أي اعرض جميع الأسماء من الجدول phone تحت الشرط التالي: where upper(name)like '%' || upper(:view.search) || '%'; في هذا الشرط أستخدمنا المعامل likeوسوف يقوم المعامل like بالتعرف على الأسماء التي تحتوي على الكلمة أو الحرف الموجودة في عنصر النص searchوقد أستخدمنا الدالة UPPER او يمكن إستخدام الدالة LOWER بدلاً عنها فوظيفتهما هي أما تحويل جميع الحروف الإنجليزية إلى حروف كبيرة UPPERأو تحويل جميع الحروف الإنجليزية إلى حروف صغيرة LOWER(إن شاء الله أكون قد أستطعت أن أقرب الصورة لعمل هذا الكود)أما بقية الأسطر فهي واضحة وقد تم شرح مثلها سابقاًالأن إحفظ البرنامج ثم نفذه.في عنصر النص search أكتب أي اسم او أي حرف تريد البحث عنهوليكن مثلا حرفي me ثم إضغط إنتر (ماهي النتيجة؟؟)القائمة عرضة فقط الأسماء التي تحتوي على الحرفين me سواء كان الحرفين في بداية الإسم أو في وسطه أو نهايته إنقر على أي إسم لعرض بياناته.وبذلك نكون قد أنتهينا من عملية البحثفي الدرس القادم سوف نبدأ بالتمهيد لعمليات الحذف والإضافة والتعديل. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
زكي الجعماني بتاريخ: 21 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 21 نوفمبر 2005 ممتاز أخ /أسكندر ..و يعطيك العافيه ان شاء اللهالدرس مهم وواضح..وبدءنا نتعمق في المشروعاستمر..والجميع بانتظارك...[email protected]وشكـــرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 23 نوفمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 23 نوفمبر 2005 مرحبا أشكرك أخي زكي على المتابعة.في هذا الدرس سوف نقوم بالتمهيد للعميات الأخرى كالحذف والإضافة والتعديلوبما أن الشاشة التي كوناها سابقاً هي الشاشة الرئيسية فلذلك سوف نضطر إلى إضافة مجموعة من الأزرار للقيام بالعمليات الإضافة والحذف والتعديل وأيضاً الخروج من البرنامجفأول خطوة سوف نخطوها اليوم هي إضافة مجموعة من الأزرار (Buttons)وسوف نحصر هذه الأزرار في إطار مناسب إذا قم بالتالي:1- على الـ Canvas المسمى 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 وسيكون هذا هو زر إضافة قيد.الأن يجب أن نبرمج كل زر بحيث يقوم بوظيفته:أمر الخروج من البرنامج (Exit) نضيف ترايجر أسفل الزر Exit وبالحدث WHEN-BUTTON-PRESSED ونكتب فيه الكود التالي: Exit_form; وهذا الكود لايحتاج إلى شرح (وظيفته الخروج من البرنامج).إحفظ البرنامج ثم نفذهإضغط على أي Button غير Exit تلاحظ لايؤثر في شيئ لإنها تخلو من البرمجة، لكن إضغط على زر exit تلاحظ خروجك من البرنامج بسبب أن الترايجر يوجهها الى هذا الأمر.الأن الـ Button الثاني والخاص بحذف عنصر.من البديهيات المعروفة انه قبل حذف أي عنصر فإنه يجب التنبيه بذلك أي يجب عرض رسالة تحذيرية تخبرنا بالتأكيد على الحذف أم لا.ولعرض هذه الرسالة سوف نحتاج إلى إضافة Alert .أضف Alert جديد وغير في خصائصه كما يلي:Name= MSGAlert Style= Caution أي رسالة تحذيريةButton 1 Label= Yes أي ان الزر الأول في الرسالة يكتب فيه كلمة YesButton 2 Label= No أي الزر الثاني في الرسالة يكتب فيه كلمة NoButton 3 Label إجعله فارغا لإننا لا نحتاج إلى زر ثالثDefault Alert Button= Button 2 أي إجعل الزر الثاني هو الزر الإفتراضي (النشط)الأن نرجع إلى برمجة الزر 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 سوف تظهر مباشرتاً الرسالة:لإلغاء عملية الحذف إختارعلى الزر 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; 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
emadabdullah بتاريخ: 23 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 23 نوفمبر 2005 الحقيقه مجهود تشكر عليه شكرا جزيلا .. ومستنين مشاركاتك وبالتوفيق بإذن الله Abdallah Emad اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
زكي الجعماني بتاريخ: 23 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 23 نوفمبر 2005 مرحبا بكم..أتمنى لك أخ/اسكندر مزيدا من التقدم...وبارك الله فيك.والجميع يترقبون المزيد من ابداعاتك.[email protected]خالص تحياتي.. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_dba بتاريخ: 28 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 28 نوفمبر 2005 السلام عليكم شكرا اخ اسكندر على هذة البرنامج وهذة المعلومات اريد ان اشارك معكم في هذا البرنامج واتمنى ان الكل يشارك .اريد ان اضيف تعديل بسيط على البرنامج وانشاء الله يكون جيد لكم وينال اعجابكم :اذهب الى حقل الذي اسمو SEARCH واجعلو من نوع LISTVALUE واذهب ال F4 ومن هناك اذهب الى خاصية ELEMENT IN LIST واجعلها فارغة كما فعلتم في LISTVEW ومن اذهب الى خاصية LIST STYLE واختار COMBO BOX ومن ثم انسخ الكود الذي كتبتوا في تركر POST-CHANGE واختار تركر آخر اسمو WHEN-LIST-CHANGE وانسخ الكود فيه ومن ثم احذف التركر POST-CHANGE وبعد ذلك شغل البرنامج سوف تلاحظ انه مجرد ما كتبت اول حرف تتغير القيم في LISTVIEW بدون الحاجة الى عمل ENTER ارجو ان تجربو هاذا الدرس وتخبرونا عن رايكم وشكرا لكم جميعا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Maan بتاريخ: 28 نوفمبر 2005 تقديم بلاغ مشاركة بتاريخ: 28 نوفمبر 2005 الله يعطيك العافية و يجزيك كل خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 29 نوفمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 نوفمبر 2005 مرحباشكرا جزيلاً لكل الأعضاء الذين ردوا على الموضوعوطبعاً أعذروني على التأخير الموقع كان مغلق مايفتحوأشكر الأخ m_dba على إقتراحه الرائعطبعاً هذا يجعل البحث يتم بمجرد الكتابة فقط لا يحتاج إلى enterوهذا الفقرة كنت أريد أن أجعلها مقترح تطوير في نهاية البرنامج ولكن ماشاء الله عليك سبقتني وطرحتها.على العموم سوف أشرحها بالصور في نهاية البرنامج. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 29 نوفمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 نوفمبر 2005 سوف نكمل شرحنا اليومأخر نقطة توقفنا عندها في الدرس السابق هى ولكن كيف يمكن أن أجعل العنصر ينحذف حتى من القائمة بعد الحذف مباشرتاً وبدون خروج من البرنامج؟؟؟ أي عندما أحذف العنصر يجب أن ينحذف من القائمة وليس فقط من الجدول. حتى يبين للجميع بأن الإسم قد تم حذفه.أتذكرون الترايجر التي كوناه أسفل الفورم الرئيسي والذي يتنفذ عند تنفيذ البرنامج (ماهي وظيفة هذا الترايجر؟)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 Units2- إختار إضافة3- إختار Procedure 4- إكتب إسم الإجراء بجوار الحقل name وليكن Refresh5- إختار Okسوف تظهر نافذة جديدة يوجد بها بعض الأسطرأضف الكود التالي إلى هذه النافذه بحيث تصبح بالشكل التالي:كما تلاحظ هو نفس الكود الموجود بالترايجر أسفل الفورم الرئيسي ولكن هناك بعض الإختلافات لإن هذا هنا عبارة عن إجراء قابل للإستدعاء من قبل أي ترايجر أخر.الأن ماهي التعديلات التي سوف نجريها على الترايجر الأول الذي أسفل الفورم الرئيسي؟؟؟وماهي التغيرات التي سوف نجريها على ترايجر الحذف؟؟؟التعديلات ستكون كما في الشكل التالي: أعتقد بأن التغيرات التي أجريناها لاتحتاج إلى شرح أكثر من هذا؟الان إحفظ البرنامج ثم نفذه.ثم حاول أن تحذف أحد القيود؟؟ فعلاً لقد تم حذف الإسم حتى من القائمة.ولكن بقت مشكلة بسيطة جدأ وهي أن بيانات الشخص المحذوف تبقى في بلك البيانات. (كيف يمكن معالجة هذه المشكلة البسيطة؟؟)زالحل بسيط جداً..في ترايجر الحذف أضف الأسطر التالية: :view.name:=''; :view.Address:=''; :view.Tel:=''; :view.Email:=''; :view.Memo:=''; وظيفة هذه الأسطر هو جعل قيم بلك البيانات فارغة.الأن إحفظ البرنامج ثم نفذه.ثم حاول حذف أحد الأسماء.. (لاتوجد مشاكل الأن.. :angry: .)أنتهى درس الحذف وبنهايتهة ينتهي درس اليوم ولم يبقى لنا سوي التعديل والإضافةموعدنا الدرس القادم مع التعديل على البيانات. 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 1 ديسمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 1 ديسمبر 2005 مرحبا...درسنا اليوم هو عن التعديل على البياناتسوف نقوم في هذا الدرس بإنشاء بلك بيانات جديد وCanvas جديدبلك البيانات سوف نربطه بالجدول PHONEإذا أول خطوة هي أنشئ بلك بيانات جديد (لكيفية إنشاء بلك البيانات راجع الدرس الثاني..)وخطوات إنشاء بلك البيانات هي كالتالي ( للتذكير):1- إختار Data Blocks.2- إختار إضافة.3- User The Data Block Wizard ثم O.K4- Display the Page Next time ثم التالي.5- Table Or View ثم التالي.6- Browse..7- أدخل اليوزر نيم والباسورد (system/manager) ثم connect8- إختار الجدول PHONE ثم O.K9- إختار الكل ثم التالي.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= EDIT2- CANVAS name= CNVEDIT3- FRAME الموجود في CNVEDIT Update Layout= LOCKED4- حدد العناصر NAME,ADDRESS,TEL,EMAIL,MEMO وغير في خصائصهم كالتالي: Reading Order= Left To Rightالأن أضيف زرين (BUTTONs) إلى الداتا بلك EDITوغير خصائصهما كما يلي:1- الزر الأول: name= P_CANCEL label= CANCEL2- الزر الثاني: name= P_OK label= OKالأن أضيف مربع نص في CNVEDIT وأكتب فيه الكلمة EDITإجعل شاشتك تظهر بالشكل التالي:الأن أنتهينا من التصميم المرئي لبلك البيانات الخاص بشاشة التعديل 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 فسوف يتم حفظ التعديلات.مبروك لقد أنتهينا من درس التعديل على البيانات.درسنا القادم هو إضافة بيان (قيد) جديد... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_dba بتاريخ: 1 ديسمبر 2005 تقديم بلاغ مشاركة بتاريخ: 1 ديسمبر 2005 الله يعطيك العافية بس فعلا عندك روح وصبر وتسلسل افكار وجزاك الله كل خير ...اريد ان اطرح مشروعي وهو عبارة عن تعريب الواجهة بالانجليزي والعربي حسب اختيار المستخدم قريبا ولكن اريد ان اسألك عن كيفية تحميل شرحك بالصور لعلي اقوم انا ايضا بذلك بدلا من تحميل البرنامج وذلك كي يستفيد الآخرون وبارك الله فيك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
aghannam بتاريخ: 2 ديسمبر 2005 تقديم بلاغ مشاركة بتاريخ: 2 ديسمبر 2005 al salam 3alioumnice work allah bless u اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
زكي الجعماني بتاريخ: 2 ديسمبر 2005 تقديم بلاغ مشاركة بتاريخ: 2 ديسمبر 2005 مرحبا بالجميع..الاخ/اسكندر حقيقة يتميز بالصبر و روح التعاون بارك الله فيك وزادك علما..وان شاء الله نستطيع الاسهام معك.بالتوفيق..[email protected][email protected] اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 3 ديسمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 3 ديسمبر 2005 شكراً لجميع الأخوة.وإن شاء الله قريباً نرى برنامج الأخ m_dba على هذا المنتدى وبالشرح بالصور.ولكيفية الشرح بالصور إتبع التالي:1- إلتقط الصورة التي تريد أن تظهرها وذلك بعرضها على الشاشة ثم الضغط على المفتاح Print Screen من لوحة المفاتيح.2- إفتح أي برنامج رسومات وليكن مثلاً برنامج الرسام Paint3- من القائمة Edit إختار Past. سوف تظهر الصورة التي ألتقطتها في برنامج الرسام.4- غير في شكل الصورة بحيث يظهر فقط الذي تريد عرضه.5- إحفظ الصورة بإمتداد jpg6- إفتح الموقع التالي: http://img297.imageshack.us7- إضغط على Browse من الموقع ثم إختار الصورة التي حفظتها. ثم Open8- إضغط على الزر Host it. سوف يبدأ الموقع برفع الصورة إلى الإنترنت. وبعد أن ينتهي سوف يعطيق وصلة توصلك إلى الصورة.9- انسخ هذه الوصلة. وبذلك نكون قد رفعنا الصورة إلى موقع على الإنترنت ولم يبقى سوي وضع وصلتها على المنتدى.10- إثناء كتابتك للشرح وفي المكان الذي تريد أن تضع الصورة فيه ضع مؤشر الكتابة هناك. ثم إختار IMG من الخيارات التي يعطيها المنتدى إثناء كتابة الدروس.11- إلصق وصلة الصورة التي نسختها من الموقع في المربع الخاص بذلك. ثم موفق سوف يظهر فقط وصلة الصورة ولكن عند إستعراض المشاركة سوف تظهر الصورة التي حفظتها.جرب هذه الطريقة وإذا هناك شيئ غير واضح يمكنك السؤال عنه.تحياتي.. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
إسكندر بتاريخ: 4 ديسمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 4 ديسمبر 2005 مرحبا..درسنا اليوم هو عملية إضافة قيد جديدولعمل ذلك سوف نحتاج إلى بلك بيانات جديد خاص بالإضافة وسوف يكون إسمه هو ADD وسوف يكون في Canvas جديد وسيكون إسم الـ Canvas هو CNVADD (أتفقنا..).أعتقد هذه الخطوات أصبحت بسيطة ولكن للتذكير سوف أسردها لكم وهي:1- إختار Data Blocks.2- إختار إضافة.3- User The Data Block Wizard ثم O.K4- Display the Page Next time ثم التالي.5- Table Or View ثم التالي.6- Browse..7- أدخل اليوزر نيم والباسورد (system/manager) ثم connect (إذا مرتبط سابقاً فلن تظهر هذه الخطوة.)8- إختار الجدول PHONE ثم O.K9- إختار الكل ثم التالي.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= ADD2- CANVAS name= CNVADD 3- FRAME الموجود في CNVADD Update Layout= LOCKED4- حدد العناصر NAME,ADDRESS,TEL,EMAIL,MEMO من بللك البيانات ADD وغير في خصائصهم كالتالي: Reading Order= Left To Rightالأن أضيف زرين (BUTTONs) إلى الداتا بلك ADDوغير خصائصهما كما يلي:1- الزر الأول: name= P_CANCEL label= CANCEL2- الزر الثاني: name= P_SAVE label= SAVEالأن أضيف مربع نص في CNVEDIT وأكتب فيه الكلمة ADDإجعل شاشتك تظهر بالشكل التالي:الأن أضيف ترايجر على الزر 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 ونكتب فيه الكود التالي: declare cursor curs is select name from phone; x varchar(30); y varchar(30); n boolean:=true; r number; begin open curs; x:=:add.name; x:=replace (x,'ـ',''); x:=replace (x,'أ','ا'); x:=replace (x,'إ','ا'); x:=replace (x,'ة','ه'); loop fetch curs into y; exit when curs%notfound; y:=replace (y,'ـ',''); y:=replace (y,'أ','ا'); y:=replace (y,'إ','ا'); y:=replace (y,'ة','ه'); if x=y then n:=false; end if; end loop; if n then commit_form; go_block('view'); refresh; else message ('The Name Is Found..'); end if; end; قد يكون هذا الكود طويل. ولكن يمكن أن نكتفي بالكود التالي: commit_form; go_block('view'); refresh; فقط. ولكن لا أنصح بذلك.ولكن لماذا بهذه الزيادة؟؟المتابع للدروس الأولى سوف يفهماأتذكرون رد الأخ Amgad في اول درس عندما قال: لقد حددت ان الاسم سيكون هو مفتاح الجدول .. وهذا مع اللغه الانجليزيه لاتوجد تكرار ولكن ماذا مع الاسماء باللغه العربيه ....كيف يمكن تفادى حروف الادخال مثل أ الف همزه ... ا الف بدون همزه ومثل ايضا حرف الهاء قد يكون ه هاء بدون نقطتين أو ة هاء فوقها نقطتين ...أحمد ........ أحمـــــــد أحمد ......... احمدحمزه .......... حمزةوحروف اخرى كثيرة مثل المد فى أحمــــــــــــــد فكل هذه الزيادة لتفادي ذلك..ولقد شرحت هذا الكود في وقتها (راجع الدروس السابقة)وإذا يوجد شيئ غير واضح فأنا في الخدمة...الأن إحفظ البرنامج ونفذه.إضغط على الزر Addسوف تظهر لك نافذة الإضافة.أضف إسم جديد مع بياناته ثم إضغط الزر CANCEL أي عدم الحفظتلاحظ عدم إضافة أي إسم للقائمة.ولكن حاول إضافة إسم جديد غير مكرر مع بياناته ثم إضغط على الزر SAVE (ما تلاحظ؟)لقد أنضاف الإسم إلى القائمة ويمكنك النقر عليه لرؤية جميع بياناته التي أضفتها.الأن أضف إسم جديد وليكن مثلاً (أسامة)ثم أضف إسم أخر وليكن مثلاً (اسامـــــــه)لن يقبله فسوف يعتبره مكرر رغم أنه يختلف عنه بالألف والمد والهاءويمكنك تكرار العملية لإضافة إسم آخر.. وهكذاوبذلك نكون قد أنتهينا من برنامج دليل التلفونات والحمد لله..برنامج بسيط جداً ولكنه يعتبر دفعة قوية للمبتدئين بالأوراكل ديفلوبر...والذي يريد تطبيق البرنامج عليه أن يفهم كل خطوة يقوم بها وأنا مستعد للإجابه على جميع الإستفسارت الخاصة بالبرنامج.اترككم في رعاية الله.وأنا متواجد دائما للرد على إستفسارتكم.تحياتي....إسكندر 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.