بتاريخ: 4 يونيو 201015 سنة comment_193929 السلام على من اتبع الهدى انا من المفترض انى عملت نظام قوى ومرن لتوزيع الصلاحيات و عرض الفورم بشكل متميز و رسائل خاصه بين المستخدمين يمكن استخدامو فى اكتر من مشروع بغض النظر عن تصميم المشروع وقررت ان اعرضه على اخوانى الكرام المشرفين لتبيان نقط الضعف فيه وتعديله باذن الله و شرحو لى عضو فى المنتدى امال ان يضاف له معلومه جديد ومرف رابط لفيدو شكل النظام بعض الانتهاء و ارجو من المشرفين والاعضاء القدماء مشاهده الفيدو وتوضيح نقط الضعف لتحسينها . بسم الله الرحمن الرحيم النظام باختصار يعطى الصلاحيات على مستوى application مش الداتا بيز يعنى كل المستخدمين داخلين على اسكيما او يوز واحد .النظام مكون مجموعه من الفورم اولا بناء الجدوال CREATE USER mo IDENTIFIED BY mo; ********************** GRANT dba TO mo ********************** CREATE TABLE v_user( emp_id NUMBER(6) , gro NUMBER(6) , velad VARCHAR2(25), nick VARCHAR2(25), pass VARCHAR2(25), v_user VARCHAR2(25), CONSTRAINT emp_emp_id_pk PRIMARY KEY (emp_id) ); *********************************************** CREATE TABLE v_group( gro NUMBER(6) , gro_name VARCHAR2(25), CONSTRAINT gro_id_pk PRIMARY KEY (gro ) ); ********************************************** ALTER TABLE v_user ADD CONSTRAINT gro_fk FOREIGN KEY(gro) REFERENCES v_group(gro) ; ************************************ CREATE TABLE v_from( gro NUMBER(6) not null, from_name VARCHAR2(25)not null, v_upd VARCHAR2(25)not null, v_int VARCHAR2(25)not null, v_del VARCHAR2(25)not null, velad number(25)not null, PRIMARY KEY (gro,from_name ) ); ********************************************* ALTER TABLE v_from ADD CONSTRAINT v_form_gro_fk FOREIGN KEY(gro) REFERENCES v_group(gro) ; نبداء بجدول v_user هو جدوال المستخدمين نظامemp_id رقم الموظف هو طبعا ممكن يتربط بجدوال الموظفين hrgro مفروض انهو الجروب التابع الىى الموظف و طبعا ممكن يتربط بجدوال الاقسامvelad هو عباره عن صلاحيه المستخدم صالح او لا 1 و صفر متلاnick اسم الشهره او اسم الموظف الحقيقى v_user اسم المستخدم الخاص بدخول pass كلمه المرور **********جدوال v_group الجروب هو طبعا لو نظام هيستخدم فى اى برنماج كبير يبقى هنستغى عن الجدول ده بجدوال الاقسامgro رقم الجروب هو مرتبط بجدوال v_user gro_name اسم الجروب او القسم **********************v_from جدوال الفورم اللى موجد فى النظام و صلاحيا كل جروب او قسم عليها وهنا نكتفى 3 او 4 شاشات بس لتجربه gro رقم القسم او الجروب زطبعا مرتبط بجدوال الجروب from_name اسم الفورمه velad هل القسم مسموح لها بفتح الفورمه دى ولا v صالح n مش صالح متلا v_upd وv_int وv_del هل الجروب مسموح له باجراء الانسيرت و الايبدات و الديلت ولا لا v صالح و n يصلح متلا نبتدى بقى اولا نعمل كام جمله انسيرت على اساس فهمنا للنظام زاى ماشرحتبعد كدها نبتدى فى اول فورمه و نسميها LONGونعمل بلوك هنسميهاPASS مش داتا بيز بلوك ونعمل 2 تيكست ايتم بردك مش داتبيز ايتم V_USER و V_PASS و ديزبلى ايتم اسمه weel و اتنين بوش بوتن و احد لدخول و واحد تانى لتعديل البيانات الدخول ناجى على ايتم الى اسمه V_USER وعلى تريجر WHEN-VALIDATE-ITEM نكتب الكود ده DECLARE CURSOR V_US IS select EMP_ID , GRO, PASS, NICK,V_USER FROM V_USER WHERE UPPER (V_USER) = UPPER (:PASS.V_USER);-1 V_VELAD VARCHAR2(20); BEGIN IF :PASS.V_USER IS NULL THEN -- 2 MESSAGE('ادخل اسم المستخدم'); MESSAGE('ادخل اسم المستخدم RAISE Form_Trigger_Failure; ELSE SELECT VELAD INTO V_VELAD FROM V_USER WHERE UPPER (V_USER) = UPPER (:PASS.V_USER);--3 IF UPPER(V_VELAD )<>'V' THEN MESSAGE('هذا المستخدم موقف'); MESSAGE('هذا المستخدم موقف'); RAISE Form_Trigger_Failure; END IF ; OPEN V_US ;-- 4 FETCH V_US INTO :GLOBAL.V_EMP_ID, :GLOBAL.V_GRO, :GLOBAL.V_PASS, :GLOBAL.V_NICK, :GLOBAL.V_USER; ÇáÏÎæá CLOSE V_US ; END IF ; SET_ITEM_PROPERTY('PASS.WELL',VISIBLE ,PROPERTY_TRUE);--5 :PASS.WELL:='مرحبا بك '||:GLOBAL.V_NICK; EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE('تاكد ان المستدم موجد '); MESSAGE('هذا المستخدم موقف'); RAISE Form_Trigger_Failure; -- 6 END; مش عارف اشغل نظام الاكود بس يارب احد المشرفين ينسق الموضع لان فى مشكله عندى شرح الكود كل نقطه كاتب جنبه رقم هشرحه1- كريسون هيجاب بيانات المستخدم من الجروب وكلمه المرور و هكذاا2-طبعا مش مسموح ان يخرج با الكريسون وهو سايب الفيلد فاضى3- هنا طبعا بنتاكد من نقطين مهمين اوى هما ان اسم الدخول موجد ولا لا لو مش موجد هينزل تحت على الاكسبيشن لو موجد هنتاكد ان كان صالح ولا لا4-لو اليازور موجد وصالح هبتدى احمل بيانتو من القسم او الجروب وكلمه المرور و هكذا 5-هنا نعرض رساله ترحيب باسم اليوزر 6 طبعا الجزاء هيتنفذ لو مفيش اسمرور بنفس الاسمهناجى بقى فى الايتم V_PASS و تريجر بردك WHEN-VALIDATE-ITEM ونكتب الكود ده DECLARE P NUMBER(20); X NUMBER(20):=0; BEGIN IF :PASS.V_PASS <>:GLOBAL.V_PASS THEN -- هنا بتاكد من صحه كلمه المرور MESSAGE('تلكد من رمز المرور لو تكرر هذا الخطاء 3 مرات سيتم غلق المستخدك '); MESSAGE(' تلكد من رمز المرور لو تكرر هذا الخطاء 3 مرات سيتم غلق المستخدك '); CONT.X:=CONT.X+1;-- هنا بزود واحد عشان لورقم و صل الى 3 اليوزر هيتوقف IF CONT.X = 3 THEN :SYSTEM.MESSAGE_LEVEL := '5'; UPDATE V_USER SET VELAD='N' WHERE EMP_ID = :GLOBAL.V_EMP_ID; ---------------- هنا ماينفعش اقف االفورمه ولا اعمل كومنن CONT.X := 100; --- خليت اليرقم ده 100 عشان هقفل الفورمه بس من حته تانيه END IF ; IF not CONT.X = 100 THEN RAISE Form_Trigger_Failure; end if ; -- هنا بقالو لو رقم مش 100 يعنى لسه موصلش الى 3 محولات اوقف الكريسون و خلى يجرب تانى END IF ; END; END; *************************************8و هنا فى البوش بوتن بتاع التعديل فى البيانات على تريجر WHEN-BUTTON-PRESSED IF :PASS.V_USER IS NULL OR :PASS.V_PASS IS NULL THEN MESSAGE('ادخل بيانات الدخول '); MESSAGE('ادخل بيانات الدخول '); ELSE CALL_FORM('PRDATE'); END IF ; -- هنا بتاكد انو دخل البيانات و اكيد صح لانى لو مش صح مش هيدوس اساسا على البوتن تغير البيانات فى البوتن بتاع الدخل هنعمل على مستوى WHEN-NEW-ITEM-INSTANCE if CONT.X =100 then :SYSTEM.MESSAGE_LEVEL := '5'; commit ; MESSAGE('تمك غلق المستخدم اتصل بى مدير قاعده البيانات'); exit_form ; ELSE GO_ITEM('PASS.V_PASS'); end if; -- هنا بتاكد من رقم اللى عمله لو 100 يعنى حاول يدخل كلمه المرور اكتر من 3 مرات عمل كومنت واخرج من الفورمه لو مش 100 ارجع تانى لباسورد وفى نفس البوش بوتن هنعمل تريجر على مستوى WHEN-BUTTON-PRESSED IF :PASS.V_USER IS NULL OR :PASS.V_PASS IS NULL THEN MESSAGE('ادخل بيانات الدخول '); MESSAGE('ادخل بيانات الدخول '); ELSE CALL_FORM('ST_TREE'); END IF ; -- هنا بتاكد انو دخل البيانات و اكيد صح لانى لو مش صح مش هيدوس اساسا على البوتن وهاندى على الفورمه الاكبر الفورمه الاكبر فورمه عرض الفورم اللى مسموح للمستخدم الدخول عليها الفورمه هى اكبر فورمه فى نظام ومكونه من 3 كانفس نبداى باول كنفس عبار عن شجرتين شجره للفورم الىى مسموح بيها اليوزر و شجره هى شجره فيها الفورم المفضله لل المستخدمو جروب بوتن لتعديل فى الشجر و 2 تسبلى ايتم يو ضح ان كان فى بريد جديد ولا لا وعند الظعط علي اى عليهم يذهب الى الصندوق الوراد هنبدى بشجره الاولى مفروض ان ماتفتح تظهر تفتح الفورم المسموح بيهات فى مستخدم مسموح له 5 فورم و واحد تانى مسموح 2 بس هنعمل بلو ك جديد و نسمى TREE4ونرسم الشجره ونسميها TREE4 ونعدل خاصيه sql select ونحط الجمله دى select 1 ,1 , FROM_NAME, null , to_char(GRO)from V_FROMwhere GRO = :GLOBAL.V_GRO AND VELAD=0 وبعد كده نعمل على مستوى الفورمه فى تريجر ده الكود ده FTREE.POPULATE_TREE('TREE4.TREE4');:SYSTEM.MESSAGE_LEVEL := '5';طبعا الكود مش محتاج اى شرح كدها اول مانفتح الشجره هتفتح بال الفورم حسب المستخدم هناجى بقى على الشجره ونعمل الكود ده عبى مستوى التريجر WHEN-TREE-NODE-SELECTEDونكتب الكود البسيط ده TREE.SELE_MA_TREE;الحياه سهله اوى طبعا ده اجراء و الكود الى جواها هو PROCEDURE SELE_MA_TREE IS x number (5); BEGIN M.FR := Ftree.Get_Tree_Node_Property('TREE4', :SYSTEM.TRIGGER_NODE,Ftree.NODE_LABEL); -- هنا بحمل اسم الفورمه الى ضغط عليها المستخدم فى المتغير fr SELECT V_UPD, V_INT, V_DEL INTO M.P_V_UPD , M.P_V_INT, M.P_V_DEL FROM V_FROM WHERE UPPER(FROM_NAME)=UPPER(M.FR) AND GRO =:GLOBAL.V_GRO ; --- صلاحيات المستخدم على الفورمه و حملها فى متغيرات PR;-- ده اجرتء هيتشرح حالالا end ; اما pr PROCEDURE PR IS PL PARAMLIST ; BEGIN PL:=GET_PARAMETER_LIST('PRO'); IF NOT ID_NULL(PL)THEN DESTROY_PARAMETER_LIST(PL); END IF; PL:= CREATE_PARAMETER_LIST('PRO'); ADD_PARAMETER(PL,'P_V_UPD',TEXT_PARAMETER,M.P_V_UPD); ADD_PARAMETER(PL,'P_V_INT',TEXT_PARAMETER,M.P_V_INT); ADD_PARAMETER(PL,'P_V_DEL',TEXT_PARAMETER,M.P_V_DEL); CALL_FORM(M.FR,HIDE, NO_REPLACE ,NO_QUERY_ONLY,NO_SHARE_LIBRARY_DATA ,PL); END; -- بردك مش محتاج شرح فى الاول عملت برامتر ليست و بدين اضافات صلاحيات المستخدم الى خطها فى السيلكت الى قبل دى الجراء و اضافتها 3 برامتر هيروحو للفورمه الى هيتندى عليها -- و بد كده عملن كول للفورمه اللى حددها المستخدم عن طريق الشجره و ححد البرامتر ليست بعد كده الفورمه الى نادى عليها بس الياسور اى كانت شكله هنحط الكود حسب اى بلوك داتا بيز او يضمن داخله كود فيه انسيرت او ابديت حذف على مستوى الفورمه فى تريجر WHEN-NEW-FORM-INSTANCE IF UPPER(:PARAMETER.P_V_INT) =UPPER('V')THEN SET_BLOCK_PROPERTY('DEPARTMENTS', INSERT_ALLOWED, PROPERTY_TRUE); ELSE SET_BLOCK_PROPERTY('DEPARTMENTS', INSERT_ALLOWED, PROPERTY_FALSE); END IF; --------------------------------------------------------------- IF UPPER(:PARAMETER.P_V_UPD) =UPPER('V')THEN SET_BLOCK_PROPERTY('DEPARTMENTS', UPDATE_ALLOWED, PROPERTY_TRUE); ELSE SET_BLOCK_PROPERTY('DEPARTMENTS', UPDATE_ALLOWED, PROPERTY_FALSE); END IF; ------------------------------------------------------------ IF UPPER(:PARAMETER.P_V_DEL) =UPPER('V')THEN SET_BLOCK_PROPERTY('DEPARTMENTS', DELETE_ALLOWED, PROPERTY_TRUE); ELSE SET_BLOCK_PROPERTY('DEPARTMENTS', DELETE_ALLOWED, PROPERTY_FALSE); END IF; :DE.WELL:='مرحبا بك'||:GLOBAL.V_NICK;-- هنا ر ساله ترحيب الكود مش محتاج شرح فرضا انى مفيش فى الفورمه غير بلوك واحد هو DEPARTMENTS لو فى اكتر منكده هتكرر الكود وتغير اسم البلوكالكود متكرر هشرح او ل واحد بشوف عن طريق جمله if اليوز له صلاحيه انسيرت لو عندو بغير خصاشص البلوط وخلي يقدر يعمل انسيرت لو معدوش العكس وهكذابعض كده هط بردك على مستوى الفورمه تريجرon errorالكود ده IF ERROR_CODE = 41051 THEN message(' اعزيزى المستخدم ليس لديك صلاحيات لعمل انسيرت '); message(' اعزيزى المستخدم ليس لديك صلاحيات لعمل انسيرت '); RAISE Form_Trigger_Failure; END IF; IF ERROR_CODE = 40200 THEN message('عزيزى المستخدم ليس لديك صلاحيات لعمل تعديل '); message('عزيزى المستخدم ليس لديك صلاحيات لعمل تعديل '); RAISE Form_Trigger_Failure; END IF; IF ERROR_CODE = 41049 THEN message(' عزيزى المستخدم ليس لديك صلاحيات لعمل حذف'); message(' عزيزى المستخدم ليس لديك صلاحيات لعمل حذف'); RAISE Form_Trigger_Failure; END IF; الكود طبعا مش محتاج شرحباقيه النظام ان شاء هبقى اكمله فى اقرب وقت .مستنى منكم رايكم الاولى فى النظام ومستنى من المشرفين الاخطاء و نقاط الضعف خصوصا انى مرفق رابط صغير جدا لفيدو لنظام كامل ارجو التعليق على النظام هل هو مرن كفايه لستخدمو فى اى مشروع واسف على عدم التنسيق بس لالاسف امكانيات المشاركه مش مشغاله عندى ارجو من اى مشرف تنسيق الموضع و بنسبه لكواد لو فى مشاكل فى قراتها انسخه على ورقه تيكست هتظبط ان شاء الله و اسف لو وجد اخطاء املاائيه بس انا بكتب بسرعه ومستنى تعليقتك المفيده ليا اوىىىى على الفيدو وانا مش مهتم بتنسيق الفورمه المهم قوه النظام وجزاكم الله خير و جعله علم نافع لنا وخالص لوجه الله تعالى الروابط اسف على عدم التنسيق http://rapidshare.co...cation.wmv.htmlhttp://www.mediafire.com/?wqz5qctifnfhttp://www.4shared.c...pplication.html تقديم بلاغ
بتاريخ: 5 يونيو 201015 سنة comment_193940 بارك الله فيك وجعله الله فى ميزان حسناتكجارى التحميل والتجر بة تقديم بلاغ
بتاريخ: 5 يونيو 201015 سنة comment_193957 بارك الله فيك أخي ومشروع جبار ويستفيد جميع المبرمجين ؟؟؟وأسأل الله لك داوم التقدم والنجاح,,نتظر تكملة الموضوع يا عزيزي,, تقديم بلاغ
بتاريخ: 5 يونيو 201015 سنة comment_193976 أشكرك أخي مصطفى على مجهودك المتميز...جزاك الله كل خير وإلى الأمام..تحياتي. تقديم بلاغ
بتاريخ: 7 يونيو 201015 سنة comment_194068 والله رهيب وحماااساتمنى تفيدنا اكثر بالنسببة للصلاحياتوارسال الايميل تقديم بلاغ
بتاريخ: 18 يونيو 201015 سنة كاتب الموضوع comment_194927 فيدو لنظام بعض التعديل يدعم اكثر من اللغه و بعض الاضافات و على ما اظن انه بعض التعديل اصبح الاقوى على الاطلاق فى انتظار افكاركم لتطوير النظام افكار حتى بس بدون حلول برمجيهالربط الاول الاسراع و يدعم الاستكمالhttp://www.mediafire.com/?o2jnozmj1zchttp://rapidshare.com/files/400215299/FINAL.wmv.htmlhttp://www.4shared.com/video/7wwcrHGp/FINAL.html نزل الفيدو لان لو شاهد الفيدو اون لاين مش تتفرج عليها كامل وجزاكم الله خير تقديم بلاغ
بتاريخ: 21 يونيو 201015 سنة comment_195181 اخى مصطفى عمل جيد ونشكر لك مجهودك العظيمولكن نريد الباقى لتكمله وشكرا تقديم بلاغ
بتاريخ: 22 يونيو 201015 سنة comment_195213 شكراا على اضافه هذا الموضوع المميز و المفيد جداا تقديم بلاغ
بتاريخ: 26 ديسمبر 201015 سنة comment_205986 الله يعطيك العافية يا اخ مصطفى على هذا المجهود وربنا يجعله في ميزان حسناتك تقديم بلاغ
بتاريخ: 23 مايو 201114 سنة comment_212342 بنزل الفيديو وبتفرج عليه وبإذن الله ينفعنيجزاك الله خيرا لنشر علمك تقديم بلاغ
بتاريخ: 2 مارس 201412 سنة comment_247273 السلام عليكم هل يوجد نسخة 6i ومشكور وياليت لو فيه شاشات تم تعديل 2 مارس 201412 سنة بواسطة steam تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.