بتاريخ: 21 يوليو 200916 سنة comment_164079 بسم الله الرحمن الرحيم سألني أحد الاخوان في مشاركة سابقة عن آلية الدخول الى النظام ... حيث انه يريد السماح للمستخدم باستخدام النظام من وقت معين الى وقت معين...ولقد تم كتابة الموضوع في موضوع مستقل كي يستفيد منه الجميع...والله الموفق...اولا: قم بإضافة عمودين على جدول المستخدمين :USR_IN : وهو وقت البداية للدخول الى النظام.USR_OUT : وهو وقت النهاية المسموح للمتسخدم العمل على النظام.ثم استخدم هذا الكود: DECLARE X_IN DATE; X_OUT DATE; BEGIN SELECT USR_IN,USR_OUT INTO X_IN,X_OUT FROM USER_PRV WHERE UPPER(USR_ID) = UPPER(:BLKLOGIN.USR_ID) AND UPPER(USR_PASSWORD) = UPPER(:BLKLOGIN.USR_PASSWORD); IF TO_DATE(SYSDATE,'hh24:mi:ss') NOT BETWEEN TO_DATE(X_IN,'hh24:mi:ss') AND TO_DATE(X_OUT,'hh24:mi:ss') THEN MESSAGE('NOT ALLOWED TO ACCESS THE SYSTEM NOW'); MESSAGE('NOT ALLOWED TO ACCESS THE SYSTEM NOW'); EXIT_FORM(NO_COMMIT,NO_VALIDATE); END IF; END; لا تنسونا من صالح دعائكم...بالتوفيق تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164090 جزاك الله الف خير ياخي والصراحه انت ماقصرت ابدا وربنا يقدرنا على رد جمالكفي امان الله تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164107 جزاكم الله خيراً على مجهودك وإفداتك للمنتدى وربنا يجعله في ميزان حسناتكوعايز اقول انه مش جديد على أهل فلسطين الحبيبهتقبل تحياتي تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164115 جزاااك الله خير مجهود أكثر من رااائع حيث أنني كنت أبحث عن هذه الدالة وقطعت علي المشوااارجعلها اللله من موازين أعمالك تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164127 مشكور اخى على الكود . بس عندى ملاحظة صغيرة . وهى انك ممكن تكتب الكود خلال procedure ويكون user_id مدخل لها ويفضل ان تكون على مستوى database وفى كل مرة تنادى procedure من خلال الفورمز تنادى procedure وتبعت لها user_id حتكون احسن و افضل اتمنى ان تكون الفكرة وضحت لك . .... تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164146 السلام عليكم أولا :جزاك الله خيرا يا pali.oracle طيب لو حبينا نكبر المهمة شوية يعني المستخدم دخل فعلا قبل الوقت مثلا لو بدقيقة واحدة ماهي النتيجة طبعا ممكن شغال عادي جدا المطلوب : حتى ولو هو شغال على الا application ودخل في الفترة الاي غير مسمح له بالدخول فيها يحدث له logout شكرا للجميع تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة كاتب الموضوع comment_164186 جزاك الله خيرا وسعدنا بك مشكور اخي احمد...ننتظر مشاركاتك الرائعه...جزاكم الله خيراً على مجهودك وإفداتك للمنتدى وربنا يجعله في ميزان حسناتكوعايز اقول انه مش جديد على أهل فلسطين الحبيبهتقبل تحياتي الله يخليك يا أخي عبدالله...وشكرا لمرورك الكريم...جزاااك الله خير مجهود أكثر من رااائع حيث أنني كنت أبحث عن هذه الدالة وقطعت علي المشوااارجعلها اللله من موازين أعمالك تسلم يا هاوي...جزاك الله خيراًمشكور اخى على الكود . بس عندى ملاحظة صغيرة . وهى انك ممكن تكتب الكود خلال procedure ويكون user_id مدخل لها ويفضل ان تكون على مستوى database وفى كل مرة تنادى procedure من خلال الفورمز تنادى procedure وتبعت لها user_id حتكون احسن و افضل اتمنى ان تكون الفكرة وضحت لك . .... كلامك صحيح أخي...وهو فعلا هذا الذي طبقته عندما كتبت الكود...ولكن كتبته بهذه اللطريقة كي يكون اوضح...بالتوفيقالسلام عليكم أولا :جزاك الله خيرا يا pali.oracle طيب لو حبينا نكبر المهمة شوية يعني المستخدم دخل فعلا قبل الوقت مثلا لو بدقيقة واحدة ماهي النتيجة طبعا ممكن شغال عادي جدا المطلوب : حتى ولو هو شغال على الا application ودخل في الفترة الاي غير مسمح له بالدخول فيها يحدث له logout شكرا للجميع رد جميل جدا أخي مصطفى..فعلا فكرة تستحق النقاش...انا فكرتي اخي مصطفى كالاتي:انه قبل نهاية الوقت المحدد لاغلاق الــ APPLICATION بنصف ساعة مثلا...يعطي النظام رسالة للمتسخدم انه الوقت المتبقي المسموح به لاستخدام النظام هو نصف ساعه...ما رأيك أخي مصطفى ؟؟؟واتمنى من الجميع المشاركة...بالتوفيق تم تعديل 22 يوليو 200916 سنة بواسطة PALI.ORACLE تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164192 السلام عليكمكيف حالك ياستاذي العزيز ان شاء الله تكون بخير. استاذي بخصوص الكود ماشتغل معي مرة وضعته في WHEN_NEW_FORM_INSTANCE على مستوى الموديول ومرة وضعته في البروسيجر بنفس الاسم اللي انت كتبته بالمشاركة السابقة وهو USERS_ACC ووضعت الكود قبل نهاية END وايضا ماتم التنفيذ. بدي اسئلك سوال مهم انت ليه استخدم ال DATE ولم تستخدم اي داتا تايب اخرى تخص الوقتلانه عندما ادخل على صفحة البرفلج واكتب البيانات اليسر وعندما ادخل الوقت في خانة يسر ان او تايم ان لايقبل مني الا تاريخ وليس وقت الساعة فقمت بتغيير الفورمات ماسك من الخصائص وعملت HH24:MI:SS فعند الرن تايم قبل مني الوقت ولكن لم ذهبت للداتا بيس لم يخزن الوقت الذي ادخلته فاعطاني تاريخ كما هو مبين في الصورة المرفقة هو عندما ادخل الوقت طبعا انا ادخل الوقت هكذا USR_IN USR_OUT18:00:00 08:00:00شكرا لتعاونك ياخي والله يعطيك العافية تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة كاتب الموضوع comment_164194 السلام عليكمكيف حالك ياستاذي العزيز ان شاء الله تكون بخير. استاذي بخصوص الكود ماشتغل معي مرة وضعته في WHEN_NEW_FORM_INSTANCE على مستوى الموديول ومرة وضعته في البروسيجر بنفس الاسم اللي انت كتبته بالمشاركة السابقة وهو USERS_ACC ووضعت الكود قبل نهاية END وايضا ماتم التنفيذ. بدي اسئلك سوال مهم انت ليه استخدم ال DATE ولم تستخدم اي داتا تايب اخرى تخص الوقتلانه عندما ادخل على صفحة البرفلج واكتب البيانات اليسر وعندما ادخل الوقت في خانة يسر ان او تايم ان لايقبل مني الا تاريخ وليس وقت الساعة فقمت بتغيير الفورمات ماسك من الخصائص وعملت HH24:MI:SS فعند الرن تايم قبل مني الوقت ولكن لم ذهبت للداتا بيس لم يخزن الوقت الذي ادخلته فاعطاني تاريخ كما هو مبين في الصورة المرفقة هو عندما ادخل الوقت طبعا انا ادخل الوقت هكذا USR_IN USR_OUT18:00:00 08:00:00شكرا لتعاونك ياخي والله يعطيك العافية السلام عليكمما هو الخطأ بالتحديد؟؟؟ تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164196 السلام وعليكم اخواني الكرام.....اخي مصطفي ممكن تنشئ زناد علي مستوي قاعدة البيانات ,ينفذ ما اردت , واضافة علي ذلك يمنع الدخول ايضا في ايام العطل الرسمية . CREATE OR REPLACE TRIGGER CONTROL AFTER LOGON ON SCHEMA BEGIN IF(TO_CHAR(SYSDATE,'DY') IN ('THU','FRI')) OR (TO_CHAR(SYSDATE,'HH24') NOT BETWEEN '08', AND '18') THEN RAISE_APPLICATION_ERROR(-20500,'SORRY YOU CANNOT USE A PROGRAM NOW'); END IF; END; اذا دخلت للنظام ضمن الفترة الزمنية المحددة لن تستطيع التعامل مع النظام تقديم بلاغ
بتاريخ: 22 يوليو 200916 سنة comment_164205 كان يطلع لي خطا EXCEPTION HANDLINGعلى كل حال جربت مرة اخرى تقريبا 40 مرة لحد ما زبط معايا الكود في البروسيجر اللي انت كتبتها بالاول واعتقد انه الان مافي مشكلة في الكود ولكن الان انا ادخلت خمسة انواع من اليوسرز اثنين منهم لهم وقتين مختلفين.الاول ياخذ هذا الوقت وهو From To06:00:00 03:00:00واليوسر الثاني ياخذ هذا الوقت From To18:00:00 08:00:00طبعا الاول في الفجر الساعة الثالثة الى السادسة صباحا يعني اعطيته فقط ثلاث ساعات والثاني من الساعة ثمانية الصباح الى 6 المغرب طبعا ماعليك انا بالنسبة للساعة الموجودة الان في جهازي وهي الساعة 2 الظهر على كل حال اليوزرين يستطيعوا الدخول والسيستم مش راضي يمنع اليسر الاول حسب الكود المكتوب.في مشكلة اخرى ليه قاعدة البيانات ماتسجل الوقت يعني لو انت رايت الصورة في المشاركة السابقة تجد تاريخ وليس وقت ويسجل التاريخ تبع بداية هذا الشهر مع اني انا ادخلت وقت وليس تاريخ.شكرا لك ولتعاونك تم تعديل 22 يوليو 200916 سنة بواسطة Only-Oracle تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة comment_164222 اهلا استاذ احمدلقد عملت تجربة اخرى وهي وضع هذا الكود منعزل تماما في فورمة جديدة ووضعته في داخل زر والنتيجة انه مايدخل على فورمة الانترفيس وهذا ايرور كما هو مبين في هذه الصورة تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة كاتب الموضوع comment_164224 السلام عليكم...ممكن ارفاق الفورم ؟؟؟ تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة comment_164225 مشكور اخوي وانا واضع لك اثنين فورمة تبع اللوجن اسكرين وفورمة للبرفلج check.zip تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة كاتب الموضوع comment_164229 السلام عليكمجرب استخدام هذا الكود...انا عدلت على الكود اللي انت كاتبه على الزر... DECLARE X_IN DATE; X_OUT DATE; BEGIN SELECT USR_IN,USR_OUT INTO X_IN,X_OUT FROM USER_PRV WHERE UPPER(USR_ID) = UPPER(:USER_PRV.USR_ID) AND UPPER(USR_PASSWORD) = UPPER(:USER_PRV.USR_PASSWORD); IF TO_DATE(SYSDATE,'hh24:mi:ss') NOT BETWEEN TO_DATE(X_IN,'hh24:mi:ss') AND TO_DATE(X_OUT,'hh24:mi:ss') THEN MESSAGE('NOT ALLOWED TO ACCESS THE SYSTEM NOW'); MESSAGE('NOT ALLOWED TO ACCESS THE SYSTEM NOW'); EXIT_FORM(NO_COMMIT,NO_VALIDATE); ELSE open_form('C:\Documents and Settings\ADMIN\Desktop\check\check\USERS.fmx'); CLEAR_BLOCK(NO_COMMIT); END IF; END; فقط قم بتغيير مسار الفورم...بالتوفيق تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة comment_164232 اهلا استاذيماشتغل ياخوي والرسالة مازالت موجودة تبع الاكسبشن هاندلنج. استاذي انا جربت الكود لوحدة على الزر مع اني ودي يكون شغال مع الكود اللي انت كنت كاتبة في المشاركة السابقة.ولكن المشلكة الان مازال لم يعمل معي. اذا كان يعمل معك ياستاذي الفاضل فياريت تقولي كيف تدخل الوقت البداية ووقت النهاية. وياريت انك تشوف لي موضوع الكود.وربنا يجزيك كل خير تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة كاتب الموضوع comment_164233 السلام عليكم...اخي وهيب...جرب مسح AM و PM من الفورمات ماسك...وشغل اللوجن وخبرني بالنتيجة...بالتوفيق تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة comment_164279 مساء الخيرجربت ومسحت AM & PM ومازالت المشكلة موجودة مع اني وضعت الكود في البروسيجر لوحدة وعملت له استدعاء من الزر ولكن نفس الحال.طبعا انا حاولت اني العب في الكود شويتين واضفت Exception ولكن ايضا رسالة الاكسبشن مازالت تظهر وماستطيع الدخولمنتظرك ياستاذي الفاضل تم تعديل 23 يوليو 200916 سنة بواسطة Only-Oracle تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة كاتب الموضوع comment_164292 السلام عليكمطيب اخي قم برفع الجدول اللي انت شغال عليه والفورم اللي اعتمدتهم .... تقديم بلاغ
بتاريخ: 23 يوليو 200916 سنة comment_164297 اوكي هذا الجدولCREATE TABLE USER_PRV(USR_ID NOT NULL VARCHAR2(100),USR_ENAME VARCHAR2(100),USR_PASSWORD VARCHAR2(50),USR_IN DATE,USR_OUT DATE,USR_TYPE NUMBER,USR_STATUS NUMBER)وبخصوص الفورم تجدة في المرفقات check_form.rar تقديم بلاغ
بتاريخ: 24 يوليو 200916 سنة كاتب الموضوع comment_164337 السلام وعليكم اخواني الكرام.....اخي مصطفي ممكن تنشئ زناد علي مستوي قاعدة البيانات ,ينفذ ما اردت , واضافة علي ذلك يمنع الدخول ايضا في ايام العطل الرسمية .CREATE OR REPLACE TRIGGER CONTROL AFTER LOGON ON SCHEMA BEGIN IF(TO_CHAR(SYSDATE,'DY') IN ('THU','FRI')) OR (TO_CHAR(SYSDATE,'HH24') NOT BETWEEN '08', AND '18') THEN RAISE_APPLICATION_ERROR(-20500,'SORRY YOU CANNOT USE A PROGRAM NOW'); END IF; END; اذا دخلت للنظام ضمن الفترة الزمنية المحددة لن تستطيع التعامل مع النظام اشكرك اخي محمود على الاضافة الرائعه...بالتوفيق... تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.