الانتقال إلى المحتوى

إستعمال Default Where


Faisal Matari

Recommended Posts

السلام عليكم ورحمة الله وبركاته ... 

 

ماهي Default Where  وفي ماذا تيتخدم .

Default Where هي عملية تنفيذ الشرط الخاص بالاستعلام ، ويتم استخدامه مباشرة في الفورمز لإظهار النتائج بناء على شرط معين.

 

مثلاً ، شاشة تظهر جميع الموظفين ، نريد تنفيذ استعلام في الشاشة تظهر الموظفين الذين فئة رواتيهم A.

الاستعلام سيكون كما يلي

Select * from Emp_Table Where Sal_Dgr = A;

ولكننا سننفذ في الشاشة فقط  Where Sal_Dgr = A;

 

 

ولتنفيذ هذا الشرط سنكتب الكود التالي 

 

SET_BLOCK_PROPERTY('Emp_Table',DEFAULT_WHERE,'SAL_DGR=A';
GO_BLOCK('Emp_Table');
EXECUTE_QUERY;
SET_BLOCK_PROPERTY('Emp_Table',DEFAULT_WHERE,'');
وهذا ببساطة فائدته ..
وهنا بعض الصيغ الخاصة بكتاية الاستعلام والتي تحتوي على قيم تاريخ ونصية ورقمية كما يلي :

 

 


SET_BLOCK_PROPERTY('Your_Block',DEFAULT_WHERE,'Colum_DATE='||TO_CHAR(:Cloum_DATE,'''DD-MM-YYYY''')||' AND Colum_NUMBER='||:Colum_NUMBER||
' AND Colum_Text  LIKE   LOWER(:TXT_JOB)||''%'' ');
GO_BLOCK('Your_Block');
EXECUTE_QUERY;
SET_BLOCK_PROPERTY('Your_Block',DEFAULT_WHERE,'');
 
 
وهذه بعض خائص البلوك الخاص بالسماح بعملية الحذف والاضافة والتعديل 
 
SET_BLOCK_PROPERTY('Your_Block',INSERT_ALLOWED,PROPERTY_TRUE); -- السماح بالاضافة
SET_BLOCK_PROPERTY('Your_Block',UPDATE_ALLOWED,PROPERTY_TRUE); -- السماج يالتعديل
SET_BLOCK_PROPERTY('Your_Block',DELETE_ALLOWED,,PROPERTY_TRUE); -- السماح بالحذف 

وأتمنى أن تعم الفائدة للجميع ....

تم تعديل بواسطة Faisal Matari
رابط هذا التعليق
شارك

شيئ مهم جدا كنت ساسئل عليه الاسبوع القادم لكنك استبقت الاحداث

 

تم تجربته وعمل بنجاح

 

كل الشكر لك

رابط هذا التعليق
شارك

الـ WHERE CLAUSE      هي من أهم الخصائص التابعة للـ Data Block

 

أما عن إستخدامها فهي تستخدم لإسترجاع البيانات وفق شرط معين ، وكإنما يتم عملfilter  للبيانات المسترجعة بإلإعتماد على شرط ، بعبارة أخرى هنالك قيد على أساسه تم إسترجاع البيانات ولم يتم إسترجاع البيانات كافة

 

كيفية إستخدامها :

بما إنها من خصائص الـ data block  إذن يتم إستخدامها بطريقين أما من خلال الضبط من الخصائص أو يتم السيطرة عليها برمجياً أي من خلال كتابة الكود ( والطريقة الثانية تستخدم دائماً مع (at run time))

لنرى كيف

1- من خلال الخصائص نجد خاصية   WHERE Clause

 فعلى سبيل المثال يُراد إسترجاع البيانات عند تنفيذ الإستعلام على قيمة حقل لدي في الجدول أسمه flag  يأخذ قيم Boolean  عندما قيمته = 1 قم بإسترجاع البيانات

إذن نكتب للخاصية where :flag=0   WHERE Clause  à

وفي الأغلب يلازم مع خاصية WHERE Clause   خاصية أخرى آلا وهي الـ ORDER By Clause وفائدتها عند الإسترجاع لهذه البيانات رتبها لي حسب مثلا نكتب id_emp  وهكذا

 

حسناً ، هذا من خلال الخصائص ..

 

الآن كيف سيكون إسترجاع البيانات عندما flag=0  لكن عن طريق كتابة (code) أو الإستخدام البرمجي للـ WHERE CLAUSE  

 

2- إذن لنوضح الطريقة الثانية أستخدام WHERE CLAUSE برمجياً :

 

كما ذكرت في أعلاه إن WHERE CLAUSE  هي أحد خصائص الـ Block  وللسيطرة أو للتعامل البرمجي مع الخصائص بشكل عام سيكون من خلال الإجراء الجاهز SET_ITEM_NAME_PROPERTY

 

هنا الـ  ITEM_NAME  نعوض عنه بBLOCK   لإننا كما بينت في أعلاه سنتعامل مع خصائص الـ block

إذن سيكون الإمر كالآتي : 

Set_Block_Property('block_name',default_where, flag=0' );
execute_query;

حسناً هل يمكن التعويض بدل قيمة 0 لإنها قيمة ثابتة بـتمريرparameter  يعني قيمة تغير مجرى البحث حسب ما يدخله المستخدم وليس قيمة ثابتة؟

 

الجواب يمكن طبعاً ولا حصر لعدد الـ parameter  الذي نريد أن نمرره وستكون الصيغة كالآتي :

Set_Block_Property (' block_name',default_where,'flag  = '''|| :block_name.flag_txt ||'''' );
execute_query;

هنا إستخدمت علامة = للبحث ويمكن أيضاً إستخدام الـ Like  للبحث كما في الصيغة أدناه

Set_block_property('block_name',default_where,'txt_name like'''||'%'||:block_name.txt_name||'%'||'''' );
execute_query;

وأيضاً يمكن إستخدام between كما في الصيغة المبينة أدناه :

Set_Block_Property('BLOCK_NAME',DEFAULT_WHERE, 'TEXT_DATE BETWEEN NVL('||''''||:CTRL.START_DATE||''''||',TEXT_DATE) 
AND NVL('||''''||:CTRL.END_DATE||''''||',TEXT_DATE)' ||' AND ATTRIBUTE1 IS NOT NULL AND ATTRIBUTE1=NVL('||''''||:CTRL.BEN_WHO||''''||',ATTRIBUTE1) 
AND MAIN_ACCOUNT='||:CTRL.MAIN_ACCOUNT);

وكما مبين أعلاه أكثر من شرط يجمع بينهما and أو or  حسب الحاجة  وكذلك لا حصر لعدد الـ parameter 

تم تعديل بواسطة ميسم الكرام
رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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