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

استكمال مشروع قديم

مغلق
بدأه Oracle في 6 ديسمبر 2002 · 17 رد · 1,882 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخوتي كنت قد بدأت في مشروع قديم و توقفت عنه لمدة بسبب الظروف و الان سوف ابدأ بمشيئة الله استكماله و ادعو الله ان نستفيد جميعا من هذا المشروع

سابدأ معكم استرجاع الموضوع و الحالة العملية وهو كان مشروع حصولي على شهادة البرمجة و ارجو ان نستفيد منه جميعا

#2

نبدأ الان باسم الله ان نسرد ظروف الحالة العملية و المتطلبات :

الحالة العملية تتحدث عن منشأة و المطلوب اعداد نظام متكامل لهذه المنشاة

اولا : وظائف النظام

1- تسجيل بيانات الطلبيات

2- تسجيل بيبانات العملاء

3- تسجيل بيانات بنود الطلبيات

4- تسجيل بيانات الاسعار

5- تسجيل بيانات اسعار السلع

6- تسجيل بيانات الادارات التي تقوم بالبيع

7- تسجيل بيانات العاملين بالادارات

8- تسجيل بيانات تصنيف الاجور

9- استخراج تقرير بطلبية معينة

10- استخراج تقاري بطلبيات عميل محدد

11- استخراج تقارير بالطلبيات التي تم شحنها خلال فترة معينة

12- استخراج تقرير بالطلبيات التي لم يتم شحنها بعد

13- استخراج تقارير بمبيعات كل موظف

14- استخراج تقارير بالمبيعات من كل سلعة

ثانيا : خطـــــوات التنفيذ :1- انشاء مستخدم اوراكل

2 - انشاء جداول Tables ووضع القيود Constraints

3- وضع قواعد البيانات باستخدام Database Triggers

4- انشاء النماذج Forms

5- انشاء التقارير Reports

6- انشاء القوائم menus

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

#3

نبدأ الان باذن الله بانشاء مستخدم للحالة و كذلك ننشا الجداول

انشاء مستخدم للحالة اسمه ( case ) و كلمة سر (test )

ساقوم بكتابة الاكواد هنا باذن الله

create user case identified by test;

grant connect to case;

grant resource to case;

alter user case default tablespace user_data;

alter user case temporary tablespace temporary_data;

و الان لدينا مستخدم = case و كلمة سر = test

الان ننشأ الجداول :

جدول الادارات :

CREATE TABLE DEPT (

DEPTNO  NUMBER(2)

CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY ,

DNAME  VARCHAR2(14),

LOC  VARCHAR2(13);

جدول العاملين

CREATE TABLE EMP (

EMPNO NUMPER(4),

ENAME VARCHAR2(10),

JOB VARCHAR2(9), 

MGR NUMBER (4),

HIREDATE DATE,

SAL NUMBER (7.2),

COMM NUMBER (7.2),

DEPTNO NUMBER (2(;

جدول العملاء

CREATE TABLE CUSTMOER (

CUSTID NUMBER (6),

NAME VARCHAR2(45)

ADDRESS VARCHAR2 (40),

CITY VARCHAR2 (30),

PHONE VARCHAR2 (9),

REPID NUMBER (4),

CREDIT NUMBER (9.2),

COMMENTS LONG );

جدول الطلبيات

CREATE TABLE ORD (

ORID NUMBER (4),

ORDDATE DATE ,

COMMPLAN VARCHAR2 (1),

CUSTID NUMBER (6),

SHIPDATE DATE ,

TOTAL NUMBER (8.2));

جدول تفاصيل الطلبيات

CREATE TABLE ITEM (

ORDID NUMBER (4),

ITEMID NUMBER (4),

PRODID NUMBER (6),

ACTPRICE NUMBER (8.2),

QTY NUMBER (8),

ITEMTOT NUMBER (8.2));

جدول السلع

CREATE TABLE PRODUCT (

PRODID NUMBER (6),

DESCRIP VARCHAR2 (30));

جدول الاسعار

CREATE TABLE PRICE (

PRODID NUMBER (6),

STDPRICE NUMBER (8.2),

MINPRICE NUMBER (8.2),

STARTDATE DATE ,

ENDDATE DATE );

و الان انتهت الجداول و سوف اضيف بعد ذلك ال SEQANCE المراد استخدامه في الجداول

و ياريت اعرف رايكم ‍‍‍‍‍اكمل و لا ايه رايكم

#4

انشاء فهرس لجدول الاسعار

CREATE INDEX PRICE_INDEX ON PRICE (PRODID,STARTDATE);

مسلسل لارقام الطلبيات

 CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 1 NOCAHE;

مسلسل لارقام السلع

CREATE SEQUENCE PRODID INCREMENT BY 1 START WITH 200381 NOCACHE;

مسلسل لارقام العملاء

اقتباس
CREATE SEQUENCE CUSTID INCREMENT BY 1 START WITH 1 NOCACHE

والى هنا اتوقف قليلا لاستمع الى الاراء المختلفة و اهم راي عندي هو هل استمر ام انكم تجدون هذا غير مجدي و كذلك اريد الاقتراحات التي يردها الاعضاء سواء فيما كتبته او ما يشاء الله لي ان اكتبه

#5

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

جديد مدونتي الشخصية http://www.badwi.com

ادعو لنا بظاهر الغيب

MyBooksExchange.jpg

#6

اخوي oracle كل عام وانت بخير بداية قوية واستمر ونحن معك

اتمنى لك التوفيق وفكرة المشروع قوية مرة

#7

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

(f)

#8

جميع الاخوة شكرا لكل من شجعني على التكملة و اليوم باذن الله سوف اقوم بوضع بعض ال DATABASE TRIGGER و هنا سوف اشرح هذه القواعد باستخدام SQLPLUS

اعداد برنامج لضبط اختيار رقم الموظف المسجل في جدول العملاء بحيث تكون وظيفته بائع ( JOB = 'SALESMAN' )

CREATE OR REPLACE TRIGGER CHECK_REPID

DECLARE

V_JOB VARCHAR2(30);

BEGIN

SELECT JOB INTO V_JOB FROM EMP 

WHERE EMPNO = :NEW.REPID;

IF V_JOB !='SALESMAN' THEN 

MASSEGE (' THE REPID IS NOT A SALESMAN');

END IF;

EXCEPTION 

WHEN_NO_DATA_FOUND THEN 

MASSEGE ( 'THE REPID IS NOT AN EMPLOYEE');

EMD;

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

CREATE OR REPLACE SHIPPED_ALREADY

BEFORE INSERT OR UPDATE OR DELETE ON ITEM FOR EACH ROW 

DECLARE

V_SHIPDATE DATE;

BEGIN 

IF INSERTING THEN SELECT SHIPDATE INTO V_SHIPDATE 

FROM ORD 

WHERE ORDID = :NEW.ORDID;

ELSE 

SELECT SHIPDATE INTO V_SHIPDATE FROM ORD

WHERE ORDID = :OLD.ORDID;

END IF;

IF V_SHIPDATE IS NOT NULL

THEN MASSEGE ('ORDER HAS BEEN SHIPED ALREADY');

END IF;

END;

اعداد برنامج للتاكد من ان تاريخ شحن الطلبية ليس قبل تاريخ تقديم الطلبية و ذلك عند تعديل تاريخ الشحن

CREATE OR REPLACE TRIGGER SHIP_ORD_DATE 

BEFORE UPDATE OF SHIPDATE ON ORD

FOR EACH ROW

BEGIN 

IF :OLD.ORDERDATE > :NEW.SHIPDATE 

THEN MASSEGE ('CANNOT HAVE A SHIP DATE BEFORE THE ORDER DATE ');

END IF;

END;

المطلوب اعداد برنامج للتاكد ان السعر الادنى للسلعة لا يزيد عن السعر الاساسي لها و ذلك عند ادخال او تعديل السعر الادنى للسلعة

CREATE OR REPLACE TRIGGER CHECK_PRICE 

BEFORE INSERT OR UPDATE OF MINPRICE ON PRICE 

FOR EACH ROW 

BEGIN 

IF :NEW.MINPRCE > :NEW.STDPRICE THEN 

MASSEGE ('STANDARD PRICE MUST BE MORE THAN MINIMUM PRICE');

END IF;

END;

و الى هنا اكون قد انتهيت اخوتي من اعداد البرامج الخاصة بالحالة العملية

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

#9

ممتاز Oracle

عملك رائع نرجو الإكتمال

#10

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

#11

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

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

#12

ماشاء الله اخ اوراكل مشروعك ممتاز جدا ننتظر منك الفورمز والريبورتات

#13

رائع أخي اوراكل .... الآن أكتشف لملذا اخترت هذا الاسم ...

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

وبشكل متكامل ... جزاك الله عنا خيرا ..

#14

هلا اخوي Oracle

الصراحه جهود جميل وتشكر عليه

وانا عندي اقتراح اتمنى ان ينال على استحسانك

ارى بعد ان انتهيت من انشاء الجداول وعمل اهم الDATABASE TRIGGER المهمه

ان نقوم نحنو الاعضاء بتوجيهن منك ببناء الفورم والربورت من الصفر وتطبيق كل ماتعلمناه .

وصدقني راح نجد افكار جديده من الممكن انه لم نتعلمها او نعرفها

والرى لك

شاكرا ومقدرا

اخوك

شبيــــــه الريح

#15

السلام عليكم

الاخ الفاضل شبيه الريح

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

لذا انا في انتظار الجديد مما لديكم و ياريت تبدأ اخي شبيه الريح انت و الاخرين يسيروا على خطواتك

#16

هلا والله اخوي oracle

اشكرك كل الشكر على ثقتك

ولكن انا استئذنك كم يوم علشان اختباراتي بلشت

وادعولي بالتوفيق

اخوك

شبيـــــه الريح

#17

مرحبا

اود المشاركة معكم في اتمام البرنامج بس امنحوني عشرة ايام لانهاء بعض الاعمال و لدراسة البرنامج من بدايته

اياد

#18

مرحبا

اود المشاركة معكم في اتمام البرنامج بس امنحوني عشرة ايام لانهاء بعض الاعمال و لدراسة البرنامج من بدايته

اياد

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

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