السلام عليكم
كيف يمكنك انشاء شاشه للدخول فى اوركال فورم بيلدر 10جى
فى البدايه انت بحاجه لأنشاء جدول ووضع فيه قيمتين الاولى رقم المستخدم والثانيه كلمه المرور
أولا
Code
CREATE TABLE PASSWORD
(USER_ID NUMBER(3) CONSTRAINT PASSWORD_USER_ID_PK PRIMARY KEY,
PASSWORD VARCHAR2(20) NOT NULL);
INSERT INTO PASSWORD (USER_ID,PASSWORD)
VALUES (1,100);
INSERT INTO PASSWORD (USER_ID,PASSWORD)
VALUES (2,200);
ثانيا
تقوم بأنشاء فورمه كما بلشكل التالى وسوف ارفق فى نهايه الشرح فورمه جاهزه
TEXT ITEM يجب ان يكون
DATABASE (PROPERTY NO)
TEXT ITEM يجب ان يكون
DATABASE (PROPERTY NO)
صوره رقم 1
بعد ان تقوم ببناء فورمتك بشكل ناجح يوجد لديك خيارين للتحقق من ان بيانات المستخدم الذى يود الدخول صحيحه او غير صحيحه فى حالة لو كانت صحيحه لا تظهر له شىء واسمح له بلدخول الى فورمه العمل الخاصه به اذا لم يكن اى من رقم المستخدم او كلمه السر غير صحيحتين اظهر له رساله بأن رقم المستخدم غير صحيح او كلمه المرور غير صحيحه حسب الخطأ
الخيار الاول
LOGIN تضع تريجر على زر
Trigger
WHEN-BUTTON-PRESSEDCode
BEGIN
SELECT USER_ID
INTO :GLOBAL.USER_ID
FROM PASSWORD
WHERE USER_ID = :LOGIN.TI_USER_ID
AND PASSWORD= :LOGIN.TI_PASSWORD;
GO_BLOCK('PASSWORD');
EXCEPTION
WHEN NO_DATA_FOUND THEN
:GLOBAL.COUNT := :GLOBAL.COUNT + 1;
IF :GLOBAL.COUNT = 1 THEN
MESSAGE('رقم المستخدم او كلمه السر خطأ');
MESSAGE('رقم المستخدم او كلمه السر خطأ');
ELSIF
:GLOBAL.COUNT = 2 THEN
MESSAGE('رقم المستخدم او كلمه السر خطأ');
MESSAGE('رقم المستخدم او كلمه السر خطأ');
ELSIF
:GLOBAL.COUNT = 3 THEN
EXIT_FORM;
END IF;
END;
الخيار الثانى
PROGRAM UNIT داخل ال PROCEDURE انشاء
VALIDATION_PASS ثم قم بتسميته
LOGIN ثم اكتب فيه الكود التالى وهذا الكود هو نفس الكود السابق الذى قمنا بوضعه على الزر
COMPILE بعد ان تكتب الكود بنجاح وعمل
بلشكل التالى LOGIN اكتب اسم PROCEDURE داخل زر ال
VALIDATION_PASS;
Code
-->
PROCEDURE VALIDATION_PASS IS
BEGIN
SELECT USER_ID
INTO :GLOBAL.USER_ID
FROM PASSWORD
WHERE USER_ID = :LOGIN.TI_USER_ID
AND PASSWORD= :LOGIN.TI_PASSWORD;
GO_BLOCK('PASSWORD');
EXCEPTION
WHEN NO_DATA_FOUND THEN
:GLOBAL.COUNT := :GLOBAL.COUNT + 1;
IF :GLOBAL.COUNT = 1 THEN
MESSAGE('رقم المستخدم او كلمه السر خطأ');
MESSAGE('رقم المستخدم او كلمه السر خطأ');
ELSIF
:GLOBAL.COUNT = 2 THEN
MESSAGE('رقم المستخدم او كلمه السر خطأ');
MESSAGE('رقم المستخدم او كلمه السر خطأ');
ELSIF
:GLOBAL.COUNT = 3 THEN
EXIT_FORM;
END IF;
END;
:GLOBAL.COUNT نلاحظ ان الكود يحتوى على جلوبال بأسم
وقد استخدمته لتحديد عدد المرات التى يسمح فيها للمستخدم بادخال كلمه السر خطأ
وقد قمت بعمل تريجر على مستوى الفورم وكتبت فيه الاتى
TRIGGER (FORM-LEVEL)
WHEN-NEW-FROM-INSTANCE
CODE
:GLOBAL.COUNT :=0;
يمكنك تحميل الفورمه من هنا
وبهذا نكون انتهينا من الشرح واى استفسارات حاضر ان شاء الله
Oracle Developer
Ahmed Arafa
Ahmed Arafa
الشرح وافي جدااا ...بس اذا سمحت اخي الكريم ,كيف اقدر اضع اسم المستخدم في متغير من نوع جلوبال حتى اتمكن من اظهاره كعنوان للنافذة التالية
ReplyDeleteSELECT USER_ID , USER_NAME
DeleteINTO :GLOBAL.USER_ID , :GLOBAL.USER_NAME
......................
=====================
وبهد ذلك تأتى على الفورمه وتضع
BLOCK LEVEL TRIGGER
WHEN-NEW-BLOCK-INSTANCE
وتضع بداخله قيمه الجلوبال فى
TXT_ITEM
:BLOCK.TXT_ITM := :GLOBAL.USER_NAME
:BLOCK.TXT_ITM
هذا هو عنوان النافذه التاليه
:)
شكراااا
Deletethank you so much , but what i tried to open form Instead of 'block' . it will gave me error can't read form ... how i can open it with out error :) ?
ReplyDeletethe form builded by oracle forms 10g
Deleteand give me error message
:GLOBAL.COUNT must declared ?????
ReplyDeleteمع العلم اني اعلنت عنه
هل هذه الشاشة تلغي شاشة الدخول الرئيسية عند عمل RUN للفورم
ReplyDelete