بتاريخ: 16 أبريل 200421 سنة comment_5420 قمت بعمل هذه الفورم والخاصة بـ login واتمني ان تعطوني رأيكم فيها ، واليكم ماعملته:اولا قمت بعمل فورم واسميتها login وقمت بتعديل ابعادها كالتاليx = 150y = 100العرض = 250الطول = 150 وهذا جدول المستخدمين create table users ( username varchar2(20), passwd varchar2(20)) وقمت بعمل البروسيجر التالي PROCEDURE check_auth (p_user in varchar2, p_pass in varchar2) IS v_user varchar2(20); v_pass varchar2(20); tmp varchar2(20); BEGIN loop select username into v_user from users; if v_user = p_user then exit; else message('Not Valid User'); exit; end if; end loop; if v_user = p_user then select passwd into tmp from users where username=v_user; if tmp != p_pass then message('Wrong Password!'); clear_form(no_validate); else new_form('main_menu'); end if; end if; ENd; ثم قمت بعمل زر Login وبه trigger من نوع when-button-preesed ووضعت به الكود التالي check_auth(:users.username,:users.passwd); وطبقت واشتغلت كويس ،، بس في مشكلة لو كان البرنامج عن طريق الفورم 9 فمعني ذلك ان المستخدم يستطبع ان يغير في الباراميتر الموجود في عنوان الفورم ، ويقوم بالدخول لشاشة التى يريدها من دون المرور على شاشة login وفكرت ان اعمل في جميع الفورم trigger من نوع pre-form يقوم بتشغيل الفورم الخاصة بـ login ، ولاكن اتضح لى ان هذا الامر مستحيل ، لان ذلك يعني انا كل فورم يقوم المستخدم بالدخول ستحوله الى شاشة login والتى بدورها ستحوله الى الشاشة الرئيسية ،،،، login.fmb تقديم بلاغ
بتاريخ: 16 أبريل 200421 سنة comment_5430 بالنسبه لموضوع التاكد من ان المستخدم بدأ بشاشة الدخوليمكنك انشاء متغير من النوع global عند الدخول من هذه الشاشه و علي كل شاشه في تريجر when_new_form_instanceتقوم بوضه قيمة افتراضيه للمتغير باستخدام default_value وهي دالهوذلك لانه اذا قام المستخدم بالدخول غير المشروع نضع قيمه للمتغير للننا سنقوم بالتاكد من قيمتهثم نضع جمله شرطيه اذا كانت قيمة المتغير كما كتبناها في شاشة الدخول يستمر و اذا كانت كما كتبناها افتراضيا نغلق الشاشهبالنسبه للكود افضل كتابته بهذه الطريقه PROCEDURE check_auth (p_user in varchar2, p_pass in varchar2) IS x varchar2(20); BEGIN SELECT 1 INTO X FROM users WHERE username = p_user AND passwd = p_pass ; new_form('main_menu'); EXCEPTION WHEN NO_DATA_FOUND THEN message('Not Valid User');message('Not Valid User'); EXIT_FORM; END; لانها هكذا اسرع من عمل LOOP علي الجدول باكمله مع البيانات الكثيره ستاخذ وقت طويلمع تمنياتي بالتوفيق تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.