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

عمل Execute_query حسب شرط معين


anasyihia

Recommended Posts

يا جماعة الخير اريد عمل execute_query حسب شرط معين في بلوك ال detail
مثال :
عندي موظفين في ماستر
وبيانات الاجازات في ديتيل
اريد عمل زر يعرض الموظفين الذين لهم اجازات فقط

وهذا اول طلب لي ورجو الرد

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

السلام عليكم
اذا كنت تريد ان تستخدم ذلك في الرن تايم استخدم
مثلا في زر اعمل على تريجر
when-button-pressed التالي:


set_block_property('اسم البلوك',default_where,'إسم العمود في قاعدة البيانات='||:item);--شرط الاستعلام
go_block('إسم البلوك'); -- fاذهب الى البلوك المطلوب
clear_block(no_commit); --امسح البلوك بدون حفظ
execute_query; --استعلم

وفقك الله
الجنتل

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

لكن يا اخ جنتل
انا اريد عمل عرض في بلوك الماستر للموظفين الذين لديهم اجازة اي عرض للموظفين في البلوك الماستر الذين لهم بيانات في بلوك الديتيل (الاجازات)
لأنه في الوضع العادي يقوم بعرض كل الموظفين الذين لديهم او ليس لديهم اجازات
قمت بوضع شرط (is not null) في بلوك الاجازات ولك لم يعطي نتيجة لأن هذا الشرط يطبق عند استعلام من بلوك الاجازات
وفي الماستر والديتيل الاستعلام يكون على الماستر (الموظفين )ثم يعرض البيانات في الاجازات حسب رقم الموظف سواء له اجازة او لا

معلش طولت عليك
باختصار الاستعلام الذي اريده
select emp_tb.emp_no,vacation.vac_nam from emp_tb,vacation
where
vacation.vac_nam is not null

ارجو ان تكون الصورة وضحت
وارجو ان تتحملوني شوي

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

السلام عليكم
اخي العزيز اعطيك طريقة مبسطة وهي كالتالي
اعمل عمود في جدول الماستر حق الموظفين سميه
cnt_vac مثلا وهو عدد الاجازات للموظف
وكل ما يعمل للموظف اجازة تروح عامل ابديت عليه وبعدين تشوف
بواسطة الـــ set_block_property
تقوم باضافة and cnt_vac is not null
الطريقة الثانية انك تعمل لووب على الماستر بعدعمل الاستعلام يقوم بتحسس ما اذا كان الموظف لدية اجازة يخليه مثل ماهو
اما اذا كان بدون اجازة يعمل له clear_record
كالتالي :
على مستوى when-new-block-instance
declare
cursor chk_vac is select 'c' from vacation where emp_no=:emp_tb.emp_no;
x char(1);
begin
first_record;
open chk_vac;
loop
fetch chk_vac into x;
exit when :emp_tb.emp_no is null;
if chk_vac%found then
next_record;
else
clear_record;
end if;
end loop;
close chk_vac;
first_record;
end;
ارجو ان اكون وفقت بالاجابة ، طبعا الطريقة الثانية بافتراض ان لديك عمود emp_no في جدول الديتيل كا foreign key على الماستر
مع العلم اني انصحك بالطريقة الاولى خصوصا اذا كان عدد الموظفين كبير جدا
وفقك الله
الجنتل

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

انا اعتقد ان الاقصر والاسهل استخدام ال where CLAUSE لان اللى هاتكتبو فيها هو الشرط بس يعنى لو عاوز تعرض الموظفين اللى ليس لديه عموله هاكتب فى ال

where clause comm is null

و طيعآ كل طرق الاخوه صح
ايهاب وجدى

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

السلام عليكم
أعتقد ان الموضوع ابسط من ذلك بكثير
لي ملحوظة علي رد الأخ الجنتل

طريقة وضع عمود به عدد الاجازات ه ي طريقة خاطئة تماما
فمن مبادئ التصميم الصحيح لاي قاعدة بيانات
هو عدم وضع في الجدول اي عمود يمكن حسابه مثل عمود العمر مثلا وعدد الاجازات لكل موظف يمكن حسابه بكل سهولة و لا حاجة لاضافة هذا العمود لتنفيذ ما يريده الأخ السائل

فيمكن تنفيذ ما يريده بكل سهولة عن طريق الديفولت وير باستخدام EXISTS OR IN OPERATOR

فعن طريق تنفيذ الكود التالي في الBUTTON الذي يريد به عرض الموظفين ذوي الاجازات فقط يظهر له فقط الموظفين الذي لديهم أجازات

declare  
v_where varchar2(2048);
begin  
v_where :='EXISTS (SELECT 1 FROM  EMP_PER_VAC WHERE  EMP.EMPNO=EMP_PER_VAC.EMPNO)';
SET_BLOCK_PROPERTY('EMP', DEFAULT_WHERE, V_WHERE );
GO_BLOCK('EMP');
EXECUTE_QUERY;
CLEAR_MESSAGE;
end;


بالتوفيق

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

السلام عليكم
اولا: بالنسبة لعمود احتساب عدد الاجازات لقد اخطات فيه وكنت اقصد عمود بولين يدلل على وجود اجازة من عدمه ، اي اذا كان هناك اجازات يكون true واذا كان لا يوجد اجازات يكون false
ثانيا: بالنسبة للاعمدة المحوسبة فهذة ضرورية الاستخدام وهذا الكلام موجه للاخ العزيز hanon_ocp
ولا يمكن الاستغناء عنها والامثلة كثيرة اضرب منها
افرض ان لديك كرت صنف يجب احتساب الكمية الحالية للصنف فهذا العمود يجب ان يكون محوسب
ونقوم بعمل فانكشن تقوم بحساب الكميات سواء زيادة الرصيد عبر فواتير شراء او نقص الرصيد عبر فواتير بيع .. الخ
مثال اخر حساب تكلفة صنف تكون بتحسس فواتير الشراء التي عملت على الصنف واحتساب متوسط تكلفة للصنف
وازيدك من الشعر بيت حساب رصيد عميل ، حساب رصيد حساب معين ، حساب رصيد مورد كلها اعمدة محوسبة
نقوم بعمل ابديت لها حسب حالة الحركة القائمة .... والامثلة كثيرة كلها تؤيد عمل الاعمدة المحوسبة
فمن الخطا القول ان عمل اعمدة محوسبة في الداتا بيز خطا ;)
وللعلم هناك جداول كاملة محوسبة ;) مثل
جدول الاستاذ العام الذي يتم انشاء القيود فيه اليا سواء كانت مبيعات مشتروات سندات قبض صرف ... الخ
لذلك فهي ضرورية ..
ولا انتقص بهذا الكلام اي شئ من الاخ العزيز hanon_ocp ولكن اذكر ذلك فقط للفائدة
مع العلم ان اجابة الاخ hanon_ocp صحيحة واكثر من رائعة
اذا كان هناك اي استفسار انا جاهز
وفقكم الله
الجنتل

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

السلام عليكم


اولا: بالنسبة لعمود احتساب عدد الاجازات لقد اخطات فيه وكنت اقصد عمود بولين يدلل على وجود اجازة من عدمه ، اي اذا كان هناك اجازات يكون true واذا كان لا يوجد اجازات يكون false

الأخ الجنتل
ما معني كلمة عمود بولين ؟؟؟ ;)
فلا يوجد اي داتا تايب من نوع بولين بالنسبة للجداول
و اين نضعه هل في جدول الأجازات ام في جدول الموظفين ؟
و ما الحاجة اليه اذا كان يمكننا ان نعرف اذا كان الموظف له أجازات ام باستخدام query statment
و يبدو أنك خلطت بين كلامي عن عدم الحاجة الي اضافة عمود لحساب عدد الاجازات و بين تكوين جداول بعض الأنظمة مثل المخازن او الGL
فلم اكن اتكلم عن نظام مخازن او حسابات او الحاجة للاحتفاظ بارصدة عميل او صنف
كنت فقط اعقب علي ردك بعمل عمود لحساب عدد الاجازات لشرح انه يوجد طريقة أفضل من ذلك لتحقيق غرض الأخ السائل
عموما المهم ان يوجد حل صحيح للمشكلة و الاستفادة للجميع و شكرا لك علي اهتمامك
بالتوفيق تم تعديل بواسطة hanon_OCP
رابط هذا التعليق
شارك

السلام عليكم
اقصد ببولين فلاج ممكن يكون number وتكون القيمة فيه 1 او 0
او char تكون القيمة فيه t او f ويكون في جدول الموظفين طبعاااااااا .
وبالنسبة للــ query فقد اشرت بها في اول رد
وبالنسبة للخلط ما خلطت اي شئ ;)

فمن مبادئ التصميم الصحيح لاي قاعدة بيانات
هو عدم وضع في الجدول اي عمود يمكن حسابه

هذا كلامك ;)
وعلى العموم لك خالص التحية والتقدير اخي hanon_ocp
وهذة فرصة سعيدة تعرفنا فيك
والحوار كله لكي تعم الفائدة
وشكرا على معلوماتك القيمة
وفقك الله
الجنتل
تم تعديل بواسطة الجنتل
رابط هذا التعليق
شارك

السلام عليكم
خير ان شاء الله يا اخ الجنتل ;)
و أهلا و سهلا بيك
و ارجو ان تعم الفائدة علي الجميع و جيد تبادل الاراء و الأفكار ان كان الغرض منه هو بناء طرق جديدة و مفيدة لحل المشاكل
بالتوفيق ان شاء ا لله

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

السلام عليكم
هلا فيك اكثر اخوي hanon
والمناقشة كلها لا لأي شئ اخر غير الفائدة
ومحاولة الوصول الى افكار حلوة وبناءة
ملحوظة : اضفتك عندي في الايميل للتعارف ، اذا ما في عندك مانع طبعا ;)
وهذا ايميلي [email protected]
وفقك الله
الجنتل

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

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

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

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

×   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.

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

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

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