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

بتاريخ:

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


انا أنشأت تايمر ووضعت في when_timer_expired


execute_query



ووضعت الكود المعروف بالتايمر في when_new_forms_instance


ووضعت رسالة بحيث اذا اتي record جديد تأتي رسالة "لديك سجل جديد"


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

ارجووووووووووو المساعدة

بتاريخ:

يرجى ارفاق الملف ليتم معاينته

بتاريخ:

أخي الفاضل
السلام عليكم ورحمة الله وبركاته

الجواب
1- إذا كنت تريد أن تأتي الرسالة بعد تخزين السجل ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ POST-INSERT على مستوى الـ BLOCK
2- إذا كنت تريد أن تأتي الرسالة عند مجئ سجل سواء كان السجل جديدا أو كان مخزنا من قبل وقد وصلت إليه من خلال التنقل بين السجلات ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ WHEN-NEW-RECORD-INSTANCE على مستوى الـ BLOCK

ولا توجد حاجه هنا لاستخدام الـ TIMER

بالتوفيق ان شاء الله

بتاريخ:
أخي الفاضل
السلام عليكم ورحمة الله وبركاته

الجواب
1- إذا كنت تريد أن تأتي الرسالة بعد تخزين السجل ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ POST-INSERT على مستوى الـ BLOCK
2- إذا كنت تريد أن تأتي الرسالة عند مجئ سجل سواء كان السجل جديدا أو كان مخزنا من قبل وقد وصلت إليه من خلال التنقل بين السجلات ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ WHEN-NEW-RECORD-INSTANCE على مستوى الـ BLOCK

ولا توجد حاجه هنا لاستخدام الـ TIMER

بالتوفيق ان شاء الله


كلام منطقي...
بتاريخ:
  • كاتب الموضوع

شكرا يااخوان


انا وضعت التايمر لكي بعمل refresh اوتوماتيك


بس المشكلة في الرسالة وضعتها في post_insert ولكن المشكلة الرسالة تأتي مع لووب التايمر سواء كان هناك سجل جديد او لا

اريد الرسالة تظهر فقط في حالة وجود سجل جديد


وشكرا

بتاريخ:

جرب حصر كود الرسالة داخل هذا الشرط

if :system.record_status in ('INSERT','NEW') then
your_message;
post; -- or commit;  وذلك لتغير حالة الريكورد ويتم حفظ البيانات اما بشكل كامل او بشكل مؤقت اختر المناسب
end if;
--- حاول استخدام new
--وإن لم تنفع استخدم insert

بتاريخ:

معلش ياباشا .... الكود اللي موجود في التيمر ايه بالظبط
تكرار الرسالة بدون اي سبب ، يعني كل شوية الرسالة بتطلع ده معناه انها بتتفير مع التيمر .... احنا محتاجين نعرف التيرجر بتاع التيمر ولو امكن أرفع الفورمة هيكون أفضل

بتاريخ:

السلام عليكم
أخي الكريم
يرجى وصف ماتريد أكثر
هل التايمر موجود على نفس الشاشة التي يتم ادخال بها الريكورد أم شاشة أخرى لايتم ادخال بيانات بها ولكن تريدها ان تتحسس الجدول هل تم تسجيل به بيانات أم لا؟؟
أرجوا توضيح كل العمل أكثر

موفق

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

التايمر موجود على نفس الشاشة


والفورم لا ادخل فيه اي بيانات فقط شاشة مراقبة




ولكن المشكلة لما اضع في post_record او when_new_form_instance في لبلوك


تكرر الرسالة مع تكرر التايمر وتأتي سواء كان هناك ريكورد جديد او لا وضعت التايمر لكي يحدث البيانات بدون بدلا موضع زر اكتب فيه execute_query



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



وشكرا ارجوووووووو المساعدة

بتاريخ:

السلام عليكم
أخي الكريم
طالما انها شاشة مراقبة يبقى يمكنك عمل الاتي
طبعا انت انشئت التايمر وهو repaet
وطبعا ده في تريجر when new form instance
مثلا زي كده

select count(*) into :global.re from emp;

declare
V_TIMER timer;

begin V_TIMER:=CREATE_TIMER('TIMEE',120,REPEAT);
	end;


في تريجر when timer expired
يمكنك عمل الاتي

declare
x  number;
 record_no number;
begin select count(*) into x from emp;

if x=:global.re then
	null;
elsif x>:global.re then

record_no:=(x- :global.re);
	message('تم حفظ عدد  '||record_no ||   'ريكورد');
	message('تم حفظ عدد  '||record_no ||   'ريكورد');
	:global.re:=x;

elsif x<:global.re then
		record_no:=( :global.re-x);
	message('تم حذف عدد ' ||record_no ||   'ريكورد');
	message('تم حذف عدد ' ||record_no ||   'ريكورد');
	:global.re:=x;
end if;
end;




فكرة الموضوع في الترجير when new form instance
هتعمل جلوبال فريبال يوجد به عد الريكورد
وفي كل مرة أثناء تنفيذ التايمر هيقارن وبناءا عليه يطلع الرسائل
جرب وقولي
موفق

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

شكرا لك يا اخي


لقد قمت بتجربة الكود ونجخ معي



يا اخي ارجو ان تشرح عمل الكود


جزاك الله خير

بتاريخ:

السلام عليكم
الفكرة الاي في التريجر الاول when new form instance
هعرف عدد الصفوف الاي موجودة ف الجدول وهخزنها في جلوبال فريبال وده بيحصل عند فتح الشاشة وطبعا تم انشاء التايمر
======
بالنسبة للتريجر الخاص ب expired للتايمر
سيقوم بمعرفة عدد الحقول الاي في الجدول وتخزينها في متغير ومقارنة قيمة هذا المتغير بقيمة الجلوبال فريبال الاي اخذ القيمة وقت فتح الشاشة فلو وجد ان القيميتين متساويتين لايعمل شيءلان ده معناه ان لم يتم الادخال او حذف
اما لو كانت قيمة المتغير أكبر من قيمة الجلوبال فريبال فمهناه انه تم ادخال بيانات وبكده يعرض لك رسالة تفيد بذلك وبه عدد الريكودر الاي تم ادخاله
بعد كده مباشرة بجعل قيمة الجلوبال =قيمة المتغير حتى لاتظهر لك الرسالة على طول
====
ونفس الفكرة في الحذف سيقارن ويعيطك الرسالة

دي الفكرة العامة للموضوع
لو في اي جزئية في الكود مش واضحة قولها كي اوضحها لك بإذن الله

موفق وكل عام وانتم بخير

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

شكرا جزاك الله خير

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

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

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

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

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

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.