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

بتاريخ:

السلام عليكم
أخي الكريم \جندي الله
لم استطع تشغيلها برضه لان جدول الموظفين يختلف عن الاي الموجود في ال hr لكن انا حاولت اعمل لط طريقة عمل اللوب على جدول الموظفين في سكيمة سكوت
انا ارفقت لك وبالصور اتمنى ان يكون هذا حل للمشكلة
ملحوظة الكود يمكنك وضعه في تريجر pre insert
انظر الى المرفقات وقولي

موفق

_________.rar

  • الردود 36
  • المشاهدات 5.5k
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

بتاريخ:

اخى جندى الله
لماذا لم تجرب ان تكتب الكود فى when-validate-item
مثل ما ذكرت من قبل فى ردى لك .
وانت لم ترد على .

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

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

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

ممكن تكون طريقة شرحي صعبة شوية بس أنا جربت
when-validate-item and when-new-record-instance and when-new-item-instance
برضوا منفعوش

جزاكم الله خيرا وآسف جدا لو حد زعل مني

بتاريخ:

أخي الكريم جندي الله
معلش انا مكنتش متابع الموضوع من الاول ، ولحد ما أفهم الموضوع كاملاً
انا بس عندي تعقيب صغير على الكود اللي انت وضعته وكمان على كلام الاخ abdou1984

ما الغرض من الفليداشن ده ؟؟؟
هل الغرض منه لو اي ريكورد من الريكوردات فيه حاجة غلط ( طبعا على حسب ما انت عايز يعني ) ، ما يعملش حفظ لكل الريكوردات ؟؟؟؟
لو الاجابة نعم .... يبقى الكود اللي حضرتك كاتبه صح ، وفي الحالة ده أحب أعرف ايه مشكلتك مع الكود اللي انت كااتبه ، يعني انت حاسس انه غلط ليه من ناحية البيزنس طبعاً
لو الاجابة لأ ... وإنك عايز بس تستبعد الريكور بس اللي فيه خطأ ، يبقى كود حضرتك منطقيا خطأ ، والحل المناسب كلام الاخ abdou1984
فياريت الاجابة بأه ... عشان اقدر اساعدك لو ربنا قدر لي
=======================================================
بالنسبة لكلام الاخ abdou1984 ، فكلامه صحيح 100%
توزيع التريجرات أهم ما يميز الديفلوبر ، وعشان كده اوراكل عملت اكتر من حدث عشان يساعد الديفلوبر
لو عايز رأي ( طبعا لحد ما أفهم الموضوع كاملا ) يبقى تحط التيرجر ده على when validate record
انا لحد دلوأتي مش فاهم انت اعتراضك على كلام الاخ abdou1984

ولما أنقل على الريكورد التاني يروح مطلعلي الرسالة اللي أنا حاططها على التريجر , يعني أنه بيفير التريجر لأنه شايف الريكورد اللي وقفت عليه الآن فاضي , وبكده مبقدرش أضيف فيه داتا


معذرة اختلف معاك
when validate عامة بتتفير في حالة خروجك من الريكورد مش في حالة دخولك عليه ، يعني اول لما تسيب الريكورد الاول وتخش على التاني ، هيفير الفليداشن على الاول بس ، وفي حالة ان الاول مفهوش داتا يبقى التيرجر معاه كل الحق انه يعترض
الكلام اللي حضرتك قولته ده ينطبقى على new instance ( سواء بأه فورم - ايتم - بلوك -ريكورد )

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

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

أنا فعلا عايز لما يجي يعمل إدخال للبيانات يوقف الإدخال لو في فيلد من الريكورد فاضي

الفورم اللي أنا شغال عليها زي الأيميل بالظبط بس كأنه إيميل واحد مقسم على أكثر من شخص وكل شخص ليه حاجات محددة فقط يعملها

كل ريكورد يمثل موظف , في فيلد أسمة و الموضوع الفرعي له و الموضوع نفسة, ما أريدة أنه لو في أي فيلد فاضي يطلع الرسالة وعدم الإدخال في الداتابيس

وعني الأكواد دي : زر اسمة الإرسال وفيه جملة الكوميت
هيعمل كوميت لو حصل تغيير في الفورم وأديتة شرط أنه لو في فيلد من دول فاضي يطلع الرسالة ويعم
raise form_trigger_failure

ويطلع رسالة أن المهمة أرسلت لو الشروط مفيهاش مشاكل
-----> هوا بيحس بالتغيير في الريكورد الاول أما لو في ريكوردس فيها مشاكل مبيشفهاش ويطلعلي أن المهمة أرسلت وبيعمل أدخال لل2 ريكورد منهم الريكورد الثاني اللي فيه مشاكل

عملت زي ما قالي أخي عبده84 فعلا بيوقف الإدخال بس الرسالة لسه بتظهرلي أن المهمة أرسلت بنجاح

وعندي بعض الدات اللي أنا حاططها على تريجر
pre-insert على البلوك

لأن مش كل الداتا بدخلها بإدي زي رقم المهمة مثلا عملها جنريت على ال pre-insert للبلوك


ممكن تكون مشكلتي في ترتيب التريجرز

----------------------------

لو عندك تعليق أخي عبده1 أخبرني بارك الله فيك

بتاريخ:

طيب مبدأيا الكود في حته غلط

NEXT_RECORD;
EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';


المفروض العكس ... كده


EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
NEXT_RECORD;



لان تخيل معايا اني واقف على الركورد الاول وطلع مفهوش مشاكل ، رحت حضرتك قولت له روح على اللي بعده ، وبعد كده قولت له لو ده اخر يكورد اخرج من اللوب ، يعني كده مش هيعمل فلديشن على الريكورد التاني لو اخر ريكورد ، وطلعك ال COMMIT بره اللوب
ده مبدأيا لحد ما أتفحص الكود بناءا على شرحك
لنا عودة ان شاء الله

=======================
برضه ما فهمتش ، انت عايز لو اي ريكورد فيهم في خطأ ، ما يعملش حفظ لكله ، ولا الريكورد اللي فيه ايرور بس هو اللي ما يتمش الحفظ
ياريت تجاوب لي على السؤال ده ، عشان غالبا الكود هنعمل فيه تعديل في الشرط اللي حضرتك وضعته

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

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

لو أي ريكورد فيه خطا ميعملش حفظ لكلة

لأن لو التاني في خطأ ولم يعمل له إدخال وعمل إدخال للباقي , ممكن المستخدم يعتقد أنه تم الإدخال للجميع

بتاريخ:

السلام عليكم ورحمة الله وبركاته
اخواني فالله
بعد التحية
مرفق نموذج اتمني ان ينال اعجبكم ومعه ملف شرح فيديو من نوع Gif
يمكن عرضه من
Windows Pictuer and fax viewer
يشرح طريقة العمل
واسكربت يحتوي على الجدول
ويجب طبيقها على المستخدم scott لاستخدام ملف ال emp
الخاص بيه

وفقكم الله الى ما تحبون ويرضي

msg.rar

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

الحمدلله أتحلت المشكلة بفضل الله ثم مجهودكم العظيم

الحل أني عملت اللوب اللي قاللي عليه الاخ مصطفى جميل في زر الإرسال كالتالي

go_block('TASK_DETAILS');

               first_record;
           FOR I IN 1..:cc LOOP 
               IF  :TSK_TO IS NULL OR :TSK_D_TAG IS NULL OR :TSK_DESC IS NULL
             THEN 
                        SET_ALERT_PROPERTY('ALERT_MESS', TITLE, 'Tasks');
                       SET_ALERT_PROPERTY('ALERT_MESS', ALERT_MESSAGE_TEXT, 
'cant leave empty fields');
                       L := SHOW_ALERT('ALERT_MESS');
                       DELETE_RECORD;
                       RAISE FORM_TRIGGER_FAILURE;
                       EXIT WHEN :SYSTEM.LAST_RECORD='TURE';
               END IF;
               NEXT_RECORD;
           END LOOP;
           
                     DO_KEY('COMMIT_FORM');




ال
:cc
في طريقة عمل اللوب بالتفصيل في الملف اللي بعتة الأخ مصطفى جميل

جزاكم الله خيرا وبارك الله فيكم جميعا

أنا أستفدت من كل واحد شارك في الموضوع

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

بتاريخ:

ألف مبروك ياباشا ان المشكلة اتحلت
بس انا مش فاهم ازاي حضرتك عامل DELETE_RECORD :
هو حصل عملية انسرت لسه ؟؟؟؟
على العموم الحمد لله ان المشكلة اتحلت

معلش برضه ... طلع EXIT WHEN :SYSTEM.LAST_RECORD='TURE';
بره الIF

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

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

الله يبارك فيك

ماشي أنا لغيت delete-record أنا كنت حاططها علشان تشيل الريكورد من الفورم ولكن لغتها أحسن وطلعت الجملة برة ال if

بارك الله فيك أخي بشمهندس عبده

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

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

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

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

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

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.