بسم الله الرحمن الرحيم ...
كنت جالس أنظم بعض الملفات القديمة ووجدت هذين الدرسين وحبيت أشارككم فيها .
الدرس الأول : تعبئة القائمة وقت التشغيل من جدول معين . ( خاص لمطوري التطبيقات على Oracle Developer ) .
السبب : فرضاً لديك شاشة تختار منها مثلاً الجنسيات أو تختار منها إسم الموظف ، يجب أن يكون إسم الموظف هذا أساساً في جدول معين كيف تختاره ولكن أنتظر :unsure: يجب أن تكون القيمة التي ترجعها هذه القائمة هي رقم الموظف .... حسناً لتقوم بذللك قم بعمل التالي :
إذهب إلى Object Navegator ثم قم بإنشاء Procedure جديد في الـ Program Units كالتالي :
PROCEDURE POPULATELIST(
LISTNAME VARCHAR2,
GROUPNAME VARCHAR2)
IS
RG_ID RECORDGROUP;
ERRCODE NUMBER;
BEGIN
RG_ID := FIND_GROUP(GROUPNAME);
IF ID_NULL(RG_ID) THEN
MESSAGE('GROUP NAME IS NOT CORRECT');
END IF;
CLEAR_LIST(LISTNAME);
ERRCODE := POPULATE_GROUP(RG_ID);
POPULATE_LIST(LISTNAME,RG_ID);
EXCEPTION WHEN OTHERS THEN
MESSAGE('CANNOT POPULATE LIST :'||LISTNAME||'WITH GROUP:'||GROUPNAME);
END;طيب هذا الكود اللي يعبئ القائمة ولكن لتعبئة القائمة يجب تحديد مصدر البيانات اي جملة الإستعلام وذلك يكون بإنشاء RecordGroup جديد وأكتب جملة الإستفسار التي تعجبك مثلاً :
SELECT ALL ename , to_char(empno) FROM emp ORDER BY 1
طبعاً الحقل الأول يمثل القيمة التي تظهر للمستخدم والثاني تمثل قيمة نفس الحقل ويجب أن تكون من النوع Character .
الآن يتبقى الخطوة الأخيرة وهي إنشاء Trigger على مستوى تحميل الفورم لتعبئة القائمة .
/*
Trigger Name : PRE-FORM .
LEVEL : FORM-LEVEL .
BY : Ibrahim Bakhsh .
*/
POPULATELIST('EMP_DETAILS.EMP_CODE','RG_ALL_TABLES');طبعاً :
Rg_all_tables تمثل إسم الريكورد جروب .
EMP_DETAILS تمثل إسم البلوك .
EMP_CODE تمثل إسم الحقل .
أنتهى الدرس الأول ....
نرجو من الجميع الدعوة بالتوفيق .