الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

لا يفوتكم كيفية عمل Generic Lov في برنامجك

Featured Replies

بتاريخ:

السلام عليكم
هذه هي طريقة عمل generic lov بحيث يكون لديك One lov تستخدم لاظهار بيانات مختلفة لحقول مختلفة
مثلاً
افرض ان لديك
1- حقل اكواد البلادان
2- حقل اكواد العملات
3- حقل اكواد الاقسام

بالطريقة الإعتيادية يجب ان تقوم بعمل عدد 3 Lov وعدد 3 record group واحد لك حقل يحوي الـQuery الخاص بالحقل .

في هذا المثال الذي سوف اقدمه سوف نعمل عدد 1 lov تعمل لكل الحقول بحيث يتم انشاء الـ Record group تلقائياً عند الـتنفيذ

الخطوات :
الخطوة الاولى أنشاء Lov و Record Group1
- اعمل Record Group من الـ Object navigator ثم ضع به الـ Query التالي

SELECT to_char(null) col1, to_char(null) col2 from dual


2- من الـ Object navigator قم بانشاء Lov وضع لها الـ Record group المنشى في الخطوه 1
3- في الـ Column maping property الخاص بالـ Lov
-ضع عدد 2 Columns باسم Col1 , col2
-في حقل الـReturn item الخاص بالـ Col1 ضع GLOBAL.RETURN_ITEM

بهذه الطريق نكون قد قمنا بعمل record group يحوي عدد 2 حقول Col1 , col2
ثم حددنا عدد 2 column في الـ Lov بنفس لاسماء Col1 , Col2 على اعتبار ان الـ Col1 هو الكود والـ Col2
هو الوصف او التسمية الخاصة بالـكود ثم عملنا global variable باسم GLOBAL.RETURN_ITEM لارجاع
قيمة الكود عن اختيار اي قيمة من الـ Lov

الخطوة الثانية عمل Procedure يقوم بانشاء record group عند التنفيذ ويضع بياناته في الـ Lov على حسب
الـ Item الذي كان محددا عندما ضغطنا f9
وهذا هو الـ Procedure

PROCEDURE Populate_Lov (p_Item_name varchar2,p_Query varchar2)
Is
R_id recordgroup;
Begin
R_id := find_group('multi');
if not id_null(R_id) then 
 delete_group('multi');
end if;
 R_id:=Create_Group_from_query('multi',p_Query);
 Set_lov_property('lov',group_name,R_id);
 list_values(NO_RESTRICT);
 copy(name_in('global.Return_item'), p_Item_name);
End;



لاحظ الـ Procedure يستقبل قيمتين الاولى اسم الحقل والثانية الـQuery الخاص به وهذه القيم متغيره حسب الحقل الذي كان محدد
عندما نضغط المفتاح F9
فمثلاً
لو اردت ان تضع الـ Lov لحقل الـ Deptno لاظهار الكود والاسماء اعمل Trigger لهذا الحقل من نوع KEY-LISTVAL ثم ضع به
الـProcedure كالاتي

Populate_lov(:system.trigger_item,'select to_char(deptno) col1 ,to_char(dname) col2 from dept');


بحيث نمرر له اسم الـ Item والـ Query وهكذا
واذ اردت ان تضع الـ Lov لحقل الـ Empno لاظهار الكود والاسماء اعمل Trigger لهذا الحقل من نوع KEY-LISTVAL ثم ضع به
الـProcedure كالاتي

Populate_lov(:system.trigger_item,'select to_char(empno) col1 , to_char(ename) col2 from emp');



وهذا Form جاهز يعمل على المتسخدم scott/tiger

GENERIC_LOV.fmb

بتاريخ:

وعليكم السلام
أخي خالد فكرة ممتازة بدل من ان يكون في النموذج أكثر من lov وراح اجرب واشوف .
تحياتي :)

بتاريخ:

تميز دائم ... الى الأمام استاذ خالد :)


أخوك Oracle

بتاريخ:

طول عمرك متيز اخ خالد
منتظرين افكار رائعة اخري

بتاريخ:

شكرا خالد

بتاريخ:

مشكور

بتاريخ:

مجهودك لهذا المنتدى فوق الرائع
الله يوفقك أستاذ خالد ...

بتاريخ:
  • كاتب الموضوع

شكراً لكم جميعاً وانا فخور بهذا التفاعل الممتاز

هناك افكار اخرى ممكن ان نضيفها للمثال السابق وخاصاً عندما نتحدث عن تطبيق هذه الفكره لـ Application متكامل يحوي عدد
كبير من الشاشات وبالطبع سوف يكون به عدد اكبر من الـ Lov وهي كالاتي :
1- ان نقوم بعمل جدول في الـ Database بحيث يحوي الحقول التالية:
item_name لحفظ اسم الحقل الذي سوف يكون له Lov
Block_name يحوي اسم الـBlock الموجود به الـitem name
Form_name يحوي اسم الـForm الموجود به الـ block و الـ item
Query يحوي الـQuery text الخاص لهذ الـitem
طبعاً الهدف من وضع اسم الـForm و اسم الـBlock هو احتمال ان يكون لدينا text item معين بنفس الاسم موجود في اكثر من Block او اكثر
من Form ولكن الـQuery الخاص به مختلف .
2- نغير الـCode الخاص بالـ Procedure بحيث ياخذ الـQuery من الجدول .
3- نضع الـLov والـ Record Group والـProcedure في object library بحيث نستطيع ان نتسخدمه في اكثر من form

وشكراً

بتاريخ:

جزاكم الله خير الجزاء على هذا المجهود الرائع
وربنا يجعله في ميزان حسناتك

  • بعد 5 شهور...
بتاريخ:

بسم الله الرحمن الرحيم

اولا اود ان اشكر الاخ خالد جزيل الشكر للفكرة الرائعة جدا ولكن اود ان اطلب من الاخ خالد المزيد من الافكار النيرة التى تزيد شباب العرب والمسلمين خبرة تميزهم عن الغرب واليهود ان شاء الله وشكرا

  • بعد 2 سنة...
بتاريخ:

جزاك الله خيرا

بتاريخ:

لم استطع تحميل الملف الرجاء تعديل الوصلة وشكرا

بتاريخ:

مشكورآآآآآآآآآآآآ جدآ على هذه الافكار الممتازه يأستاذ خالد و نتمنى ان تعطينى الافكار و نحن نفكر فى طريقة العمل اذ لم يكن لديك وقت .
مشكور مره اخرى

ايهاب وجدى

  • بعد 5 شهور...
بتاريخ:

مشكوررررررررررررررررررررررررررررر

بتاريخ:

شكرا لك
وجعلها الله في ميزان حسناتك
ونتمنى لك التقدم
كما انني لم استطع تحميل الملف الرجاء تعديل الوصلة وشكرا

  • بعد 4 سنة...
بتاريخ:

تسلم اخي على هذة الفكرة الرائعة .. تصدق قبل ما افتح هذة الصفحة كان معي شاشة فيها اكثر من 5 LOV محتار كيف اسوى بهم

  • بعد 8 شهور...
بتاريخ:

شكرا لك
وجعلها الله في ميزان حسناتك
ونتمنى لك التقدم
كما انني لم استطع تحميل الملف الرجاء تعديل الوصلة وشكرا
بتاريخ:

جزاك الله خير اخي الكريم والله موضوع متميز جداً وحصلنا منه على فائده وفقك الله الى ما فيه الخير وزادك الله علماً

بتاريخ:

انا ايضاً لم استطع تحميل الملف

  • بعد 2 أسابيع...
بتاريخ:

يظهر ان الملف المرفق تم حذفه ،، الرجاء تحميله مرة اخرى لان الموضوع متميز

  • بعد 7 شهور...
بتاريخ:

شكراً لصاحب الموضوع على هذه الأفكار

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.