الانتقال إلى المحتوى
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.

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

Featured Replies

بتاريخ:

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

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

بتاريخ:

هات ال PROPERTY PALLETTE لل DETAIL وفى ال WHERE CLAUSE أكتب الشرط اللى انت عايزة

بتاريخ:

السلام عليكم
اذا كنت تريد ان تستخدم ذلك في الرن تايم استخدم
مثلا في زر اعمل على تريجر
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]
وفقك الله
الجنتل

تم تعديل بواسطة الجنتل

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

شكر كبير للأخ hanon_ocp قمت بتجربة الكود أعطاني النتيجة التي اريدها
وشكرا لجميع الأخوةالذين شاركو في الموضوع

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

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

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

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

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

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.