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

مشكلة حسابية من فورمين

Featured Replies

بتاريخ:

يا شباب عندي مشكلة في الفورم


عندي فورمين وكل واحد فيه جدول وبينهم عمود مربوط بينهم

السؤال عندي عمود اسمه MOV_ID هذا هو العمود الرابط بينهم

في الفورم الرئيسي بيانات وفيه عمود COPIES وفي الفورم الفرعي ايضا COPIES

يا شباب اريد عندما يدخل المستخدم الرقم في MOV_ID ثم يدخل اي رقم في COPIES وبعد ان يضغ زر الحفظ

يقوم الجدو الرئيسي تلقائيا بنقصان القيمة الموجدوة في حقل COPIES

أرجو ان تكون الفكرة وصلت بالله اريدها بالشرح

بتاريخ:

السلام عليكم ورحمة الله و بركاته
أخي الكريم
يمكنك تحقيق ذلك عن طريق استخدام ال DATABASE TRIGGERS

فيمكنك عمل تريجر علي الجدول الDETAIL
يقوم بتعديل عدد النسخ الرئيسية عند ادخال نسخ جديدة في الDETAIL
اوحتي عند تعديل عدد النسخ او حذف السجل الفرعي تماما

و هذا المثال يوضح ذلك

CREATE OR REPLACE TRIGGER reset_copies
  AFTER INSERT OR UPDATE OR  DELETE
  ON detail_table
  FOR EACH ROW
DECLARE  
  V_DIFF NUMBER;
BEGIN
  IF INSERTING
  THEN
  UPDATE main_table
	 SET copies = copies - :NEW.copies
   WHERE mov_id = :NEW.mov_id;
  ELSIF UPDATING
  THEN

  V_DIFF:=(:NEW.copies - :OLD.copies)*-1;
  
  UPDATE main_table
	 SET copies = copies + V_DIFF
   WHERE mov_id = :NEW.mov_id;
   ELSIF DELETING THEN
   UPDATE main_table
	 SET copies = copies + :OLD.COPIES
   WHERE mov_id = :OLD.mov_id;
   
  END IF;
END;


حيث الMAIN_TABLE هو الجدول الرئيسي الموجود به عدد النسخ المتبقية
و الDETAIL_TABLE
هو الجدول الذي تقوم بالتعديل او ادخال عدد النسخ فيه

و التريجر يعمل كالتالي

بفرض ان تخميني صحيح و ان هذا لفيلم يتم تأجيره :)

اذا كان عدد النسخ الاولية هو 50
ثم تم تأجير عدد 10 نسخ
فسيتم تعديل عدد النسخ المتبقية الي 40

و اذا تم تعديل ال10 نسخ الي 8 فقط
فسيتم اضافة 2 نسخة الي النسخ المتبقية لتصبح 42
و اذا تم حذف السجل كاملا سيتم اعادة تعديل النسخ المتبقية مرة اخري الي 50 بعد اضافة ال12 نسخة التي تم حذفهم


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

مع تمنياتي بالتوفيق

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

يا اخي انا عندي فورمين وفي كل فورم جدول


هل هذا الكود ينفع في هذه الحالة

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

يا اخي لو سمحت تشرح اين اضع هذ ا الكود في تريقر

وكلما وضعته في اي تريقر يأتي الخطا في اول سطر create

ارجو ان شرح لي وشكرااااااااا

بتاريخ:

السلام عليكم

التريقر المقصود في رد الاخ hanon_OCP --- يخزن في قاعدة البيانات وليس مرتبط باي فورم
ولكي تقوم بتخزينة افتح ال SQL*Plus
والصق الكود هناك

وشكرا

بتاريخ:

يمكنك تحقيق ذلك عن طريق استخدام ال DATABASE TRIGGERS

أخي الكريم
كما هو موضح بكلامي في الأعلي
و كما أوضح الأخ عادل 2005 مشكورا في رده
هذا database triggers
ولا يكتب في الفورم

قم بانشائه عن طريق الSQl PLUS
كما أوضح لك الأخ عادل 2005


و نعم هو يعمل علي مستوي قاعدة البيانات بغض النظر عن مكان التعامل مع البيانات سواء فورم او ويب بيج او غيره
بالتوفيق
بتاريخ:
  • كاتب الموضوع

مشكور يا اخي الكريم

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

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

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

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

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

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.