بتاريخ: 12 مارس 200620 سنة comment_62757 السلام عليكم ارجو ايضاح الخطأ فى هذة الفورمةIF :U_N IS NULL THEN MESSAGE('PLEASE ENTER YOUR USER NAME'); MESSAGE('PLEASE ENTER YOUR USER NAME');END IF;IF :U_P IS NULL THEN MESSAGE('PLEASE ENTER YOUR PASS WORD'); MESSAGE('PLEASE ENTER YOUR PASS WORD'); END IF;DECLARE X VARCHAR2(233); Y VARCHAR2(222);BEGIN LOOP SELECT U_N,U_P INTO X,Y FROM USERS; END LOOP; IF (X=:U_N AND Y=:U_P) THEN CALL_FORM('h:\HOSPITAL\MAIN1.FMX',HIDE,DO_REPLACE); ELSE MESSAGE('SORRY USER NAME OR PASSWORD YOU ENTERED WRONG'); MESSAGE('SORRY USER NAME OR PASSWORD YOU ENTERED WRONG'); END IF; END;حيث :U_N هو USER NAME ITEM و :U_P هو PASWORD ITEM تقديم بلاغ
بتاريخ: 13 مارس 200620 سنة comment_62830 يجب تعريف المتغيرات (variables) اولا ثم كتابة الكود تقديم بلاغ
بتاريخ: 13 مارس 200620 سنة comment_62839 اخي الكريمقد يكون هذا هو الخطأ وقت التنفيذBEGINLOOPSELECT U_N,U_P INTO X,Y FROM USERS;END LOOP;IF (X=:U_N AND Y=:U_P) THENجملة السيلكت ترجع اكثر من سطر واحد وهذا يسبب خطاء من نوعToo_many_rowsهل من الممكن توضح لي ما هو هدفك من اللوب؟ بامكانك كتابة الكود بالشكل التالي begin select U_N,U_P INTO X,Y FROM USERS where u_n=:u_n and u_p= :u_p; exception when no_data_found then MESSAGE('SORRY USER NAME OR PASSWORD YOU ENTERED WRONG'); MESSAGE('SORRY USER NAME OR PASSWORD YOU ENTERED WRONG') raise_form_trigger_failure; end; /* اذا كان اليوزر نيم والباس ورد صحيح سيصل التنفيذ الى هنا */ CALL_FORM('h:\HOSPITAL\MAIN1.FMX',HIDE,DO_REPLACE); كذلك لاتنسى استخدامraise_form_trigger_failure;اذا لم يتم ادخال اليوزر نيم او الباسوردحتى يتوقف تنفيذ باقي الكوداتمنى اني فهمت المطلوب بشكل جيدتحياتي لك تقديم بلاغ
بتاريخ: 13 مارس 200620 سنة comment_62917 السلام عليكم..اخي الكريم محمد سعيد،لا أعتقد هناك داعي لإستخدام loop ..إليك هذا الكود : DECLARE V_COUNT NUMBER; BEGIN /*USE GLOBAL VARIABLE TO ENHANCE SECURITY OVER VARIOUS FORMS*/ :GLOBAL.NAME := :FORM_NAME.U_N; :GLOBAL.PASS := :FORMNAME.U_P; /* USE COUNT TO MAKE SURE THAT THERE IS ONLY ONE USER WITH THIS NAME AND PASSWORD*/ SELECT COUNT(*) INTO V_COUNT FROM USERS WHERE COLUMN_NAME = :GLOBAL.USER AND COLUMN_PASS = :GLOBAL.PASS; IF V_COUNT = 1 THEN CALL FORM ('NEXT_FORM'); ELSE MESSAGE ('SORRY USER NAME OR PASSWORD YOU ENTERED WRONG'); MESSAGE ('SORRY USER NAME OR PASSWORD YOU ENTERED WRONG'); END IF; END; مع تمنياتي بالتوفيق تم تعديل 13 مارس 200620 سنة بواسطة mab886 تقديم بلاغ
بتاريخ: 13 مارس 200620 سنة كاتب الموضوع comment_62925 جزاكم الله خيرا جميعا لقد حلت المشكلة والحمد لله تقديم بلاغ
بتاريخ: 14 مارس 200620 سنة comment_62962 كيف اتحلت .. ارجو ان تيعث الكود الذى انحلت به المشكلهو جزاك الله خيرا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.