الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشروع مشترك بين الأوراكل وال asp؟

مغلق
بدأه عبدالله جابر شقليه في 15 يونيو 2004 · 40 رد · 11,658 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كل من يتعلم الأوراكل يرغب بأن يصبح محترف أوراكل ويستطيع من عمل أي برنامج.

طبعاً لن تصبح محترف إله إذا قمت بعمل مشاريع، مع كثر المشاريع عندها ممكن أن نقوم عنك محترف أوراكل.

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

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

والكل يرغب بربط قاعدة بيانات أوراكل على الويب، وأن يقوم بعرض اضافة بيانات عبر الانترنت.

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

وسوف نستخدم ال asp لعرض للطالب كشف علامات الطلبة وتسجيل مقرراتهم عبر الانترنت،

وطباعة شهادة القيد وكشف الدرجات عبر الانترنت، وغير من الأمور التي سوف يتم تسهيلها على الطالب ومن تخفيف الضغط على عمادة القبول والتسجيل.

فكل من يرغب بعمل ذلك فأرجوا من الجميع التواجد معنا، حتى يستطيع من تحقيق كل ما تم ذكره في الأعلى.

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

فإذا جميعكم موافق على ذلك، فإن شاءلله في تاريخ 7/7 أكون أنهيت من اختبراتي ، وسوف أقوم بشرح كيف تصميم ما تم ذكره في الأعلى.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#3

السلام عليكم

مشروع رائع أخ عبد الله ,انا سأكون حاضرة وسأتابع معك اول بأول ان شاء الله

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

#4

السلام عليكم

شكرا لكم لحسن حضوركم واهتمامكم بالموضوع .

لكن متوقع هناك الكثير سوف يهتم .

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

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#5

مساء الخير يا اخ عبدالله

انا متشكر علي ردك وانا سوف اكون متابع معك واتمني انك تفيدني لاحتراف الاوراكل

وشكرا" كثيرا" لك

#6

السلام عليكم

اتمنى ان يكون عمل جدي يستحق المتابعة

وانا من المتابعين ان شاء الله يا اخ عبداللّة

#7

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

فهل لي أن أسأل عن أفضل اصدار مناسب لما هو متوفر في جهازي حيث مواصفات الجهاز كالتالي:

CPU 700MHz

RAM 256MB

نظامي تشغيل

WinME و WinXP

فما أفضل اصدار يتلاءم مع الجهاز اضافة الى أي نظام تشغيل يفضل أن يكون التحميل...

هذا وشكراً...

#8

السلام عليكم اخ عبدالله ...

في الحقيقة انا الان ادرس الاوراكل (مبتدئ اوراكل)لذا سوف اكون من المتابعين لكم في هذا البرنامج لانني اريد تزويد معرفتي لهذا البرناج في هذا الصيف واريد ان كسب اكبر كم من المعلومات عن هذا البرنامج لذا جزاك الله خير الجزاء عنا جميعاً ...

[وما اوتيتم من العلم الا قليلا

#9

السلام عليكم

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

أخ Student، مواصفات الجهاز مناسبة.

انصح ان يتم تنزيلها على وندوز 2000 سيرفر.لان ال XP هنا الكثير من المشاكل سوف تواجهك عند تنزيلها.

انا استخدم اصدار ORACLE 8 وDEVELOPER 6.0 ، ولم اتعامل مع باقي الاصدارات، سوى اصدار 7.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#10

السلام عليكم ورحمة الله وبركاته

احب أن اهنئ الأخ عبدالله على هذه المبادرة الطييبة

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

#11

السلام عليكم

اعرف أنني أطلت عليكم الانتذار.

ان شاءلله غداً بالليل سوف أبدأ بالشرح للمشروع.

ولكن يجب على شخص يود المشاركة في هذه المشروع،يجب أن تكن لديه خلفية عن ال sql والفورم، والتقارير، وذلك ليتم عملية التسهيل بالشرح، لانه لن أقوم بالشرح، لأشخاص لا يفقهون شئ عن هذه اللغة.

سوف أحاول أن اأجعل الشرح مدعماً بالصور لواجهات البرنامج، وأنا الأن أقوم بحجز مساحة على موقع مجاني من أجل إرفاق الصور عليه.

وان شاءلله سوف نقضي مع بعضنا البعض أوقاتاً ممتعة.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#12

السلام عليكم اخوي عبدالله ...

الحقيقة انا صارلي كم يوم وانا احاول اني اسمع اخبار عن المشروع والحين طمنتني والله يوم قلت تبي تبتدي بكرة ان شاء الله عالعموم انا عندي خلفية بسيطة عن الـ sql و الفورم وان شاء الله رايح احصل فائدة كبيرة معاكم واشكرك على المجهود اللي بذلته ورايح تبذلة ان شاء الله ...

اخوك في الله abdullah-net

#13

السلام عليكم

سوف أبدأ ألان بوضع لكم أول جدول للمشروع وهو جدول ال program حيث هذا الجدول عبارة عن الدرجات العلمية التي تمنحها الجامعة من شاهدة دبلوم أو بكالوريوس....الخ.

ويحتوي هذا الجدول على ثلاث حقول كما في الاستعلام التالي:

CREATE TABLE PROGRAM(
PROG_NO NUMBER(2) primary key,
PROG_NAME_ARABIC VARCHAR2(50),
PROG_NAME_ENGLISH VARCHAR2(50));

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

الحقل PROG_NAME_ARABIC هو عبارة عن اسم الدرجة العلمية باللغة العربية.

الحقل PROG_NAME_ENGLISH وهو عبارة عن اسم الدرجة العلمية باللغة الإنجليزية.

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

الكود التالي،عبارة عن إنشاء متتابعة لجدول الدرجات العلمية:

 create sequence program_sq START WITH 1 INCREMENT BY 1 NOMAXVALUE;

.create sequence: تعبر عن إنشاء متتابعة.

program_sq: اسم المتتابعة التي سوف نقوم بإنشائها.

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

START WITH 1: هنا تعني من أين يبدأ الترقيم التلقائي للمتتابعة.

INCREMENT BY 1:هنا تحدد كيف يكون التزايد للترقيم.

NOMAXVALUE:هنا لم نحدد إلى أي أكبر قيمة يقف عندها الترقيم.

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

طبعاً قبل أن تقوم بإنشاء الجداول للمشروع، يجب أن نقوم بإنشاء اسم مستخدم وكلمة مرور خاصة بنا من أجل المشروع.

لكي تقوم بإنشاء اسم المستخدم يجب أن تدخل باسم المدير المحدد لك من قبل الأوراكل هو system وكلمة المرور له هي manager .

طبعاً تستطيع تغير كلمة المرور للمستخدم system .

قم بالدخول باسم مستخدم مدير قواعد البيانات على sql plus لكي نقوم بإنشاء اسم المستخدم.

والكود التالي عبارة عن إنشاء اسم المستخدم:

CREATE USER REGISTER IDENTIFIED BY REGISTER;

CREATE USER: حيث تعني بأننا نريد إنشام مستخدم:

REGISTER: عبارة عن اسم المستخدم الذي نريد إنشائه، ويمكنك اختيار الاسم الذي تريده للمستخدم.

IDENTIFIED BY: تعني بأنه معرف بـ كلمة المرور.

REGISTER: كلمة المرور الذي قمنا بإنشائها.

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

الكود التالي يعطي للمستخدم REGISTER صلاحية إدارة قواعد البيانات، أي بمكانها أن يعمل مثل المدير.

GRANT DBA TO REGISTER;

GRANT: معناها إعطاء صلاحية.

DBA:تعني إعطاء صلاحية للمستخدم REGISTER صلاحية إدارة قواعد البيانات.

وهي اختصار لي:Data base administrator.

بعد أن قمت بإنشاء المستخدم، قم ألان بالدخول باسم المستخدم الذي قمنا بإنشاء.

لكي تدخل باسم المستخدم الذي قمنا بإنشائه من داخل البرنامج دون الحاجة إلى إغلاق ال sql plus، كالتالي:

conn REGISTER/REGISTER;

conn تعني الاتصال إلى قاعدة البيانات.

الأول هو عبارة عن اسم المستخدم.

وبعد الإشارة / هي كلمة السر للمستخدم.

لو كنت تستخدم اتصال ODBC ، فيجب أن يصبح الكود كالتالي:

conn REGISTER/REGISTER@test;

test: عبارة عن اسم السير فر الذي أنشأته من خلال ال ODBC.

بعد أن قمت بإنشاء اسم المستخدم وكلمة المرور، وقمت بعمل الاتصال له.

قم بإنشاء جدول الدرجات العلمية program وإنشاء المتتابعة الخاصة به.

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

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

قم بفتح الفورم، وقم بإنشاء فورم، وقم بتسميته أي اسم ترغب به.

بعده قم بحفظ الفورم داخل مجلد خاص بالمشروع.

ألان نريد إنشاء الواجهة للمستخدم من أجل عملية إدخال البيانات اللازمة لجدول الدرجات العلمية.

قم بإنشاء DATA BLOCKS.

طبعاً أعتقد بأن عملية الإنشاء سهلة لكم.

قم بتحديد الجدول الخاص بالدرجة العلمية عندك عملية استعراضك للجداول.

واختر له الشكل الذي سوف يظهر للمستخدم من نوع Tabular.

وحدد عدد الحقول التي تريدها أن تظهر لك.

طبعاً سوف يظهر لك النموذج الذي قمت بإنشائه على Canvas قم بعمل تنسيق الواجهة.

وقم بعمل تنفيذ للبرنامج، لكي يظهر لك بهذا الشكل.

1.gif

طبعاً سوف تشاهد بأنني قمت بعملية تعريب للمنيو، وتغير بعض الصور لها.

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

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

طبعاً ال ITEM الخاص بـ رقم الدرجة العلمية (prog_no) بأن سوف يتم عملية الترقيم له تلقائياً، اذهب إلى خصائص هذا ال ITEM وجعل نوع ال ITEM من نوع Display ITEM، حيث سوف تجعل ال ITEM فقط ظاهر دون أن يستطيع المستخدم من أدخل أي قيم به.

طبعاً كيف سوف تتم عملية الترقيم التلقائي للحقل prog_no.

أنتم تتذكرون المتتابعة program_sq التي قمن بإنشائها من أجل عملية الترقيم التلقائي.

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

فأن ال Trigger الذي سوف نقوم باستخدامه لهذه العملية هو PRE-INSERT، الذي يعني قبل عملية الإضافة.

قم باختيار هذا ال Trigger على مستوى ال Block الخاص بالجدول program.

ألان سوف نقوم بكتابة الكود التالي داخل ال Trigger:

SELECT program_sq.NEXTVAL INTO :program.PROG_NO FROM DUAL;

هنا سوف نقوم بعملية استعلام من المتتابعة التي قمنا بإنشائها، وأن يتم تخزين القيمة داخل ال PROG_NO ، طبعاً program هو عباره عن اسم ال block الذي قمنا بتسميته للجدول program عند عملية إنشاء ال Data blocks له.

فلذلك يجب أن نحدد له من أي block سوف تريد تخزين هذه القيمة، مع وضع نقطة قبل ال Item الذي سوف نقوم بتخزينه به، مسبوقة بنقطتين : .

بعد ذلك.

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

DUAL: طبعاً عند استخدام جملة select يجب أن يتم وضع لها جدول حتى تنجح، فهذا الجدول هو مسخر من قبل الأوراكل، وسوف نتطرق لهذا الجدول لاحقاً.

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

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

مع تحياتي

تم تعديل هذه المشاركة بواسطة مهند عبادي في 13 يوليو 2004 في 09:23

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#14

تمام عليك يا محترف

ملتي ميديا عبدالله جابر شقليه

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#15

وان اردت اي مشاركه ومساعده في عمليه انشاء الجداول والعلاقات والاستعلامات والفرز والصلاحيات المفصله كلنا تحت امرك لانه ننتظرك للاشياء الجميله والقويه مثلك

وان شاء الله يتم احياء هذا المنتدى اكثر على نشاطك هنا يا ايها المبدع

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#16

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

#17

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

#18

عبدالله جـــــــــابر

شكراً على الفكره الرائعه... لاحتراف اوراكل

انا فاهم اوراكل بس كاني عندي احساس بصعوبه تصميم برامج كبيره باستخدام اوراكل بس إن شاء الله بعد الفكره اللي المطروحه منك واذا تساعدنا فيها راح يسهل علي بناء المشاريع الضغمه جدا ...........

بس 7/7 وين انت وانا وين اخوي ممكن تعطينا التحليل للبرنامج والجداول واحنا نحاول نعمل التصاميم وانت في 7/7 ابدأ بالشرح على راحتك وراح نكون متابعينك في الموضوح الين نطلع بمشروعك الضخم....................

وشكر لك اخوي عبدالله جابر

ثانيا ياليت تكون الجداول والتحليل على ملف وورد يكون احسن ...........

#19

الى الامام وبالتوفيق

سبحان الله و الحمد لله لا اله الا الله و الله اكبر

#20

السلام عليكم

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

بالنسبة للأخbandrSQL شهر 7/7 الذي ذكرته هو الذي فات.

بالنسبة لتحليل المشروع، أنا المشروع ليس جاهز عندي، وأنا ما أقوم بعمله أقوم بوضعه هنا، بمعنى تارة أقوم بجمع المعلومات، ومن ثم تنفيذها، وتارة أقوم بشرحها هنا.

بالنسبة لما قمنا له بالسابق جيد.

لكن هناك سوف يجرى تعديل، بحيث سوف نجعل نوع CANVAS من نوع TAB لأنه سوف يكون هناك مش اقل من 10 BLOCK، فعن طريق هذا ال CANVAS سوف تسهل علينا العمل.

طبعاً لا تتشاءموا جميعاً وتصبحون وتقولين ، يعني سوف نقوم بحذف ما قمنا فعله بالسابق، لكي نضعه على CANVAS من نوع TAB.

فأنا أقول لك لست مجبراً بفعل ذلك.

قم بإنشاء CANVAS جديد وسميه DATA، واذهب إلى خصائصه وحدد من الخاصية نوع الكانفاس(CANVAS TYPE) واختر منها TAB.

وهكذا أصبح لدينا نوع ال CANVAS من نوع TAB.

اذهب إلى ال CANVAS الذي من نوع TAB، في شاشة NAVIGATOR واختر منها TAB PAGES ، وقم بإنشاء واحد جديد، ومن ثمه قم بتسميته بنفس اسم ال BLOCK الذي قمنا بإنشائه للدرجات العلمية.

ألان نريد ال BLOCK الذي أنشأناه للدرجات العلمية أن يظهر على هذا CANVAS ، وعند الضغط على ال TAB PAGES يظهر له ال BLOCK.

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

ومن ثمة اذهب إلى الخصائص ومن الخصائص اذهب إلى CANVAS واختر على اي CANVAS تيرد اختيارهم، اختر منه DATA.

ومن أسفل هذه الخاصية سوف تجد خاصية ال TAB PAGE اختر منها PROGRAM.

وبهذه الطريقة أصبح ال BLOCK (PROGRAM) الخاص بالدرجات العلمية ظاهر على ال CANVAS (DATA).

ملاحظة:عند اختيارك على CANVAS لظهر ال ITEM لل BLOCK قم باختيار بتحديد جميع ال ITEM ومن ثم اختر الخصائص له الخاص بال BLOCK، ولا تذهب إلى خصائص ال BLOCK.

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

--------------------------------------------------------------------------------------------------------------------------------

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

وهذا كود إنشاء الجداول له:

CREATE TABLE TYPE(
TYPE_NO NUMBER(3) primary key,
TYPE_NAME_ARABIC VARCHAR2(50) NOT NULL,
TYPE_NAME_ENGLISH VARCHAR2(50) NOT NULL)

الحقل TYPE_NO:عبارة عن رقم نوع الوظيفة، وهو مفتاح أساسي.

وباقي الحقول عبارة عن اسم نوع الوظيفة بالعربي والإنجليزي.

طبعاً سوف يكون الحقل TYPE_NO عبارة عن ترقيم تلقائي.

وهذا الكود التالي الخاص بالترقيم التلقائي له:

create sequence TYPE_sq START WITH 1 INCREMENT BY 1 NOMAXVALUE;

ألان سوف نقوم بعمل فورم لهذا الجدول.

قم بإنشاء BLOCK جديد، وقم بتسميته على نفس اسم الجدول وليكن TYPE، وقم بتحديد جميع الحقول للجدول TYPE، ولكن عندما تصل إلى شاشة التي تحدد بها ال CANVAS قم باختيار ال CANVAS موجود مسبقاً وهو DATA.

وعند ال TAB PAGE قم باختيار NEW TAB PAGE.

بعد أن قمت بعمل ذلك، قم بتسمية ال TAP PAGE له في شاشة ال NAVIGATOR على نفس اسم ال BLOCK.

عندما قمت بإنشاء هذا ال BLOCK وعندما تم وضعه على CANVAS الذي اسمه DATA مرات قد تلاحظ بأنه بعض ال ITEM مخفيه أصبحت، لكن تستطيع تحديدها، لكي تستطيع من إظهارها، اذهب إلى خصائص هذا ال ITEM وقم بتغير أي خاصية تريدها ومن ثمه ارجع الخاصية كما كانت بالأول، ومن ثمة أغلق واجهة الخصائص لل ITEM، سوف تشاهد بأنه أصبح ظاهراً.

بعد أن قمت بعمل كل ذلك.

اذهب إلى ال ITEM الذي اسمه TYPE_NO واذهب إلى خصائصه، وحدد نوعه DISPLAY ITEM، لأنه سوف يتم إدخاله تلقائياً وليس من قبل المستخدم(كما قمنا بفعل ذلك في السابق تماما).

وقم باختيار لل BLOCK (TYPE) ال TIGGER (PRE_INSERT) لكي نضع به كود الترقيم التلقائي لل ITEM(TYPE_NO) ، وضع به الكود التالي:

select TYPE_sq.NEXTVAL into :TYPE.TYPE_NO FROM DUAL;

عتقد بأنه واضح ولا يختلف بأي شئ عن السابق.

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

ألان سوف أقوم بوضع لكم كود إنشائه:

CREATE TABLE JOBS(
JOBS_NO NUMBER(3) primary key,
JOBS_NAME_ARABIC VARCHAR2(50) not null,
JOBS_NAME_ENGLISH VARCHAR2(50) not null)

اعتقد بأنه مفهوم.

وهذا كود الترقيم التلقائي له:

create sequence jobs_sq START WITH 1 INCREMENT BY 1 NOMAXVALUE;

قم بإنشاء BLOCK وقم بتسميته على نفس اسم الجدول، وضعه على ال CANVAS ال1ي اسمه DATA وقم باختيار له TAB PAGE جديد، وقم بتسمية ال TAB PAGE له بنفس الاسم لل BLOCK.

اعتقد بأن عمله سهل لا يفرق عن السابق.

في المشاركة التاية سوف يتم شرح جدول الكليات والأقسام.

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#21

السلام عليكم

ألان سوف نقوم بإنشاء الجدول COLLEGE وهو عبارة عن الكليات والدوائر التي توجد بالجامعة، وهذا كود إنشاء الجدول:

create table college(
college_no number(4) primary key,
college_name_Arabic varchar2(60) not null,
college_name_english varchar2(60) not null,
emp_no number(4),
prog_no number(2) not null,
foreign key(prog_no) references program)

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

الحقل emp_no: هو عبارة عن رقم الموظف الذي يعملون في الجامعة(كما ترون بأنني تركته بأنه يمكن تركه فارغ، وذلك لأنه لم نقم بإنشاء جدول الموظفين، والذي سوف نقوم بإنشائه لاحقاً، وجدول الموظفين أيضاً له علاقة بالكليات والأقسام.(طبعاً رقم الموظف هنا يعبر عن عميد الكلية او الدائرة).

الحقل prog_no هو عبارة عن رقم الدرجة العلمية التي تتبع لها الكلية او الدائرة.

foreign key(prog_no) references program ، هنا تعني بأن الحقل PROG_NO هو عبارة عن مفتاح أجنبي راجع إلى الجدول PROGRAM(الدرجات العلمية).

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

create sequence college_sq START WITH 1 INCREMENT BY 1 NOMAXVALUE;

قم بإنشاء BLOCK وقم بتسميته على نفس اسم الجدول، وضعه على ال CANVAS الذي اسمه DATA وقم باختيار له TAB PAGE جديد، وقم بتسمية ال TAB PAGE له بنفس الاسم لل BLOCK.( وليكن COLLEGE).

بعد أن قمت بإنشائه أضف له على ال CANVAS الخاص به ITEM جديد، وقم بتحديد نوع DISPLAY ITEM، واجعل الخاصية DATABASE ITEM له NO ، لان هذا ال ITEM ليس عبارة عن ITEM من قواعد البيانات، وقم بتسميته PROG_NAME.

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

لكن لا تقلق دائما هناك حلول سوف نقوم ألان بإنشاء LIST OF VALUE حيث سوف نظهر هذه القائمة عندما يقم المؤشر على ال ITEM الذي اسمه PROG_NO وعندما يقوم بضغط F9 تظهر له قائمة تحتوي على رقم الدرجة العلمية وأسمائها، وعندما يختار الدرجة العلمية، تقوم بوضع رقمها على ال ITEM وتقوم بإظهار اسمها على ال ITEM الذي قمنا بإنشائه وهو PROG_NAME.

لكي نقوم بإنشاء هذه القائمة اذهب إلى شاشة ال NAVIGATOR وقم باختيار من الفورم الذي أنشأنها باختيار LOV وهي اختصار إلى LIST OF VALUE، وقم بإنشاء واحد جديد، سوف تظهر لك شاشة اختر موافق، وسوف تظهر لك شاشة أخرى قم باختيار التالي، ومن بعدها سوف تظهر لك الشاشة التالية:

lov.gif

طبعاً كيف سوف نحضر رقم الدرجة العلمية، واسمها، في خانة SQL QUERY STATEMENT سوف نضع بها جملة QUERY.

ضع بها الجملة التالية:

SELECT PROG_NO,PROG_NAME_ARABIC
FROM PROGRAM ORDER BY PROG_NO

حيث هنا سوف نستعلم من جدول الدرجات العلمية، وقمنا بتحديد الحقول التي نريدها.

ملاحظة: يمكنك من خلال الزر BUILD SQL QUERY أن تقوم باختيار الجدول التي تريد إظهار منه مع تحديد الحقول التي تريد إظهارها منه.

بعد أن قمت بكتابة الجملة اختر منها التالي.سوف تظهر لك نافذة بأن تحدد LOV COLUMN قم بنقل الحقلين الظاهرين إليك، ومن ثمه قم بوضع التالي، ومن بعدها سوف تظهر لك الشاشة التالية:

lov1.gif

هنا قام بإظهار لك الحقول التي سوف تظهر في القائمة، طبعاً تستطيع من تعريبها عادي.

لكن نحن لم نحدد له على أي ITEM سوف تظهر هذه القائمة عند الضغط على زر F9.

أنتم تشاهدون الزر LOOK UP RETURN ITEM ،من خلالها سوف نقوم بتحديد لأي ITEM سوف تعود هذه القائمة.

اجعل المؤشر موضوع على الحقل PROG_NO ومن ثمة اضغط الزر ، سوف تظهر لك النافذة التالية:

lov2.gif

هنا سوف تظهر لك كل ما هو ما قمت عمله على الفورم، طبعاً نريدها أن تظهر القائمة على ITEM الذي اسمه PROG_NO ولكن هذا ال ITEM على اي BLOCK موضوع، طبعاً ال BLOCK هو COLLEGE.

قم باختيار COLLEGE.PROG_NO كما هو موضح بالشاشة، ومن ثم موافق، ومن بعدها التالي، سوف تظهر لك شاشة تحدد اسم عنوان القائمة، ضع عنوانه (الدرجات العلمية) وحدد خصائص العرض والارتفاع له،ومن ثمة التالي، والشاشة التي بعدها اختر منها التالي أيضاً، سوف تظهر لك بعدها شاشة تسألك هل هذا ال ITEM الذي تريد إظهار به القائمة، قم بنقل COLLEGE.PROG_NO إلى الجهة الأخرى، ومن ثمة التالي، وبعدها إنهاء.

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

بذلك نكون قد أنشأنا القائمة التي سوف تعود للحقل PROG_NO على ال DATABLOCK(COLLEGE).

الآن قم بتنفيذ البرنامج.

واذهب إلى الحقل PROG_NO وقم بالضغط F9 سوف تظهر لك قائمة بهذا الشكل:

LOV3.gif

ملاحظة:لن تظهر لك القائمة اذ لم يكن هناك سجلات داخل جدول الدرجات العلمية.

وبذلك نكون قد انتهينا من كيفية إنشاء LIST OF VALUE.

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

هنا سوف نقوم بعمل TRIGGER على ITEM(PROG_NO) عند اختيار الدرجة العلمية من القائمة، تظهر اسمها على ال ITEM(PROG_NAME).

واسم ال TRIGGER الذي سوف يقوم بعمل ذلك هو (POST_CHANGE) أي عند وضع التغير.

سوف نقوم بكتابة بداخلة الكود التالي:

SELECT PROG_NAME_ARABIC INTO :COLLEGE.PROG_NAME FROM PROGRAM 
WHERE PROG_NO=:COLLEGE.PROG_NO;

هنا سوف ننشأ جملة استعلام عادية، بحيث سوف نحضر من جدول الدرجات العلمية(PROGRAM) قيمة الحقل (PROG_NAME_ARABIC) ونضعه داخل ال ITEM الذي اسمه PROG_NAME الموجود في ال BLOCK(COLLEGE) عندما رقم الدرجة العلمية، تساوي القيمة التي بداخل ال ITEM(PROG_NO) الموجود على BLOCK(COLLEGE).

قم بعمل ذلك، وشاهد النتيجة.

بذلك، نكون قد انتهينا منه.

الان سوف نقوم بإنشاء جدول الأقسام(التخصصات) للكليات أو الدوائر، وهذا كود إنشاء الجدول:

create table department(
dep_no number(4) primary key,
college_no number(4) not null,
emp_no number(4),
foreign key(college_no) references college,
dep_name_arabic varchar2(60) not null,
dep_name_english varchar2(60) not null)

الحقل dep_no:رقم القسم وهو مفتاح أساسي.

الحقل college_no:هو عبارة عن رقم الكلية أو الدائرة.

الحقل:emp_no:هو عبارة عن رقم رئيس القسم.

foreign key(college_no) references college:هنا ال COLLEGE_NO هو عبارة عن مفتاح أجنبي عائد للجدول COLLEGE.

وهذا كود الحقل الترقيم التلقائي له:

create sequence department_sq START WITH 1 INCREMENT BY 1 NOMAXVALUE;

قم بإنشاء كما قمت فعله بالسابق، وقم باختيار جميع الحقل التي تريدها أن تظهر على BLOCK، وقم بتسميته DEPARTMENT، ولكن عندما تصل إلى الشاشة التي تحدد بها ال CANVAS اختر منها DATA ، ولكن في TAB PAGE لا تختر جديد، نريده أن يظهر على نفس ال TAB PAGE التي توجد بها الكليات والدوائر، أي قوم باختيار COLLEGE.

بعد أن قمت باختيار ذلك، في الشاشة التالية، سوف تظهر لك ال ITEM الذي تريدها أن تظهرها على ال CANVAS قم باختيارها جميعاً ما عدا رقم الكلية أو الدائرة(COLLEGE_NO).

طبعاً تسألون لماذا قمنا بإخفائه؟

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

بعد أن قمت بعمل ذلك، قم بتحديد ال TRIGGER (PRE_INSERT) لبلوك DEPARTMENT لكي نضع كود الترقيم التلقائي له.

select department_sq.NEXTVAL into :DEPARTMENT.DEP_NO FROM DUAL;

هل تعتقد بأنه عندما تقوم بالإضافة على الجدول DEPARTMENT سوف يتم اخذ رقم الكلية من ال BLOCK(COLLEGE).

طبعاً .

لكي نجعله يأخذ منه القيمة، يجب أن ننشأ علاقة بين الجدولين. لكي نفهم للفورم بأنه هناك علاقة بين الجدولين.

طبعاً الجدول COLLEGE سوف يكون ال MASTER وجدول الأقسام سوف يكون DETAIL.

اذهب إلى شاشة ال NAVIGATOR واذهب إلى ال BLOCK(COLLEGE) سوف تجد من ضمنه خاصية RELATION ، قم بالضغط عليها مرتين، سوف تظهر لك الشاشة التالية:

R.gif

في خانة DETAIL BLOCK قم بتحديد أي جدول سوف يكون تابع للجدول COLLEGE قم باختيار الجدول DEPARTMENT.

اسفل الخيار JOIN CONDITION يجب أن نضع الحقول التي بينها علاقة قم بوضع التالي:

COLLEGE_NO=COLLEGE_NO

حيث هنا قمت بوضع العلاقة بين الجدولين، وهما الحقلين التي بينهما علاقة الربط بين الجدولين.

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

ملاحظة: أكيد لاحظتم عند تنفيذ المشروع بأنه أول TAB PAGE تظهر لك ال BLOCK عليها هي أخر TAB PAGE قمنا بإنشائها وهو ال BLOCK(COLLEGE).

ولو لاحظتم لو حاولتم بالضغط على F8 لكي تضيفي القيم أو تقوموا بوضع استعلام، يذهب إلى ال BLOCK(COLLEGE).

طبعاً هذه مشكلة.

في الزمانات كنت استخدم كود يحتوي على جمل IF الشرطية لعملية التنقل، وكود طويل كنوع ما، لكن هذه العلمية متعبة جداً كانت.

ولكنني قمت وحاولت بأن أحل هذه المشكلة، وضليتني أجرب إلى أن استطعت أن أنتج هذا الكود الصغير الذي لا يتجاوز سطر واحد.

GO_BLOCK(:SYSTEM.TAB_NEW_PAGE);

هل رأيتم هذا الكود صغير جداً، لا يتجاوز السطر.

سوف أوضحه لكم:GO_BLOCK اعتقد بأنكم تعرفونها وهي تحدد إلى اي BLOCK سوف تذهب.

:SYSTEM.TAB_NEW_PAGE عندما تقوم أنت بالضغط على TAB PAGE هنا سوف تقوم بحمل أسمها.

يعني لو ضغط على ال BLOCK الذي اسمه TYPE مثلا سوف تصبح بهذا الشكل:

وهذا هو الكود:

GO_BLOCK('TYPE');

فعندها سوف تنجح إلى ال BLOCK الذي اسمه TYPE وسوف تستطيع من عمل إضافة وتعديل عليه، دون أن يرجع إلى أخر TAB PAGE قمت بإنشائه.

طيب أين يتم وضع هذا الكود ألان، اذهب إلى الفورم الخاص بكل ما قمنا بعمله، واختر منه ال TRIGGER الذي اسمه (WHEN-TAB-PAGE-CHANGED).

أي عندما يتم تغير ال TAB PAGE.

بعد أن قمتم بعمل ذلك، قوموا بتعبة الجداول، وضعوا بها قيم صحيحة.

طبعاً نحن لم ننتهي من هذا الفورم، هناك العمل كثير عليه، ولكن انا سوف احضرها لكم خطوه بخطوة.

في الدرس القادم سوف أقوم بشرح لكم جدول الموظفين.

مع تحياتي

تم تعديل هذه المشاركة بواسطة عبدالله جابر شقليه في 15 يوليو 2004 في 18:48

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#22

سلامات والله اخي عبدالله وافتقدك حقيقه

وان شاء الله انها كفارات للذنوب

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#23

السلام عليكم

شكرا لك اخي عبد الهادي، وانا أيضاً افتقدك لانه لي فترة لم أتكلم معك.

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

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#24

الصراحة يا أخى عبدالله أنا أحسد الأخوة فى منتدى الأوراكل على هذه الفرصة الرائعة , كنت أتمنى لو أعرف حتى كيف أثبت الأوراكل لكى أنضم معكم فى هذه الدروس الشيقة,

أرجو من الأخوة هنا أن يستفيدوا من هذه الفرصة التى يندر تكرارها جم الأستفادة

#25

يعني انتو بادين بالمشروع من زمـــااااااااااان....

لكم 11 شهر ولا صلحتم شيء !!!!!!!!!!!

شكلكم تمشون على بيض؟.,,’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’,,

والى الحين مو واصلين شيء.

.يعني يبلكم 12 سنـــه على بال ماتخلصون

.

.

على العموم اذا احتجتوا اي مساعده انا جاهز واذا فيه مهمه اشاركم فيها انا جاهز

:

:

:

بالتوفيق والى الامــــام....لاتوقعون اني قاعد احطم فيكم بس بصراحه انتم تسبقون السلحفاه الى شوي..................

.

.

. معناً مـــــــــــن أجل المشروع

تم تعديل هذه المشاركة بواسطة bandrSQL في 17 يوليو 2004 في 12:36

هذا الموضوع مغلق.

مواضيع مشابهة