بتاريخ: 11 سبتمبر 200916 سنة comment_169423 السلام عليكم ورحمة الله وبركاته انا أنشأت تايمر ووضعت في when_timer_expired execute_query ووضعت الكود المعروف بالتايمر في when_new_forms_instance ووضعت رسالة بحيث اذا اتي record جديد تأتي رسالة "لديك سجل جديد" بس المشكلة تكرر الرسالة كل شوية اريد هذه الرسالة تظهر فقط في حالة كان هناك سجل جديدارجووووووووووو المساعدة تقديم بلاغ
بتاريخ: 11 سبتمبر 200916 سنة comment_169425 أخي الفاضلالسلام عليكم ورحمة الله وبركاتهالجواب1- إذا كنت تريد أن تأتي الرسالة بعد تخزين السجل ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ POST-INSERT على مستوى الـ BLOCK2- إذا كنت تريد أن تأتي الرسالة عند مجئ سجل سواء كان السجل جديدا أو كان مخزنا من قبل وقد وصلت إليه من خلال التنقل بين السجلات ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ WHEN-NEW-RECORD-INSTANCE على مستوى الـ BLOCKولا توجد حاجه هنا لاستخدام الـ TIMERبالتوفيق ان شاء الله تقديم بلاغ
بتاريخ: 12 سبتمبر 200916 سنة comment_169468 أخي الفاضلالسلام عليكم ورحمة الله وبركاتهالجواب1- إذا كنت تريد أن تأتي الرسالة بعد تخزين السجل ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ POST-INSERT على مستوى الـ BLOCK2- إذا كنت تريد أن تأتي الرسالة عند مجئ سجل سواء كان السجل جديدا أو كان مخزنا من قبل وقد وصلت إليه من خلال التنقل بين السجلات ، فيجب كتابة الكود في الـ TRIGGER المعروف بـ WHEN-NEW-RECORD-INSTANCE على مستوى الـ BLOCKولا توجد حاجه هنا لاستخدام الـ TIMERبالتوفيق ان شاء الله كلام منطقي... تقديم بلاغ
بتاريخ: 12 سبتمبر 200916 سنة كاتب الموضوع comment_169476 شكرا يااخوان انا وضعت التايمر لكي بعمل refresh اوتوماتيك بس المشكلة في الرسالة وضعتها في post_insert ولكن المشكلة الرسالة تأتي مع لووب التايمر سواء كان هناك سجل جديد او لا اريد الرسالة تظهر فقط في حالة وجود سجل جديد وشكرا تقديم بلاغ
بتاريخ: 12 سبتمبر 200916 سنة comment_169498 جرب حصر كود الرسالة داخل هذا الشرط if :system.record_status in ('INSERT','NEW') then your_message; post; -- or commit; وذلك لتغير حالة الريكورد ويتم حفظ البيانات اما بشكل كامل او بشكل مؤقت اختر المناسب end if; --- حاول استخدام new --وإن لم تنفع استخدم insert تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة comment_169517 معلش ياباشا .... الكود اللي موجود في التيمر ايه بالظبط تكرار الرسالة بدون اي سبب ، يعني كل شوية الرسالة بتطلع ده معناه انها بتتفير مع التيمر .... احنا محتاجين نعرف التيرجر بتاع التيمر ولو امكن أرفع الفورمة هيكون أفضل تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة comment_169523 السلام عليكم أخي الكريم يرجى وصف ماتريد أكثر هل التايمر موجود على نفس الشاشة التي يتم ادخال بها الريكورد أم شاشة أخرى لايتم ادخال بيانات بها ولكن تريدها ان تتحسس الجدول هل تم تسجيل به بيانات أم لا؟؟أرجوا توضيح كل العمل أكثرموفق تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة كاتب الموضوع comment_169596 التايمر موجود على نفس الشاشة والفورم لا ادخل فيه اي بيانات فقط شاشة مراقبة ولكن المشكلة لما اضع في post_record او when_new_form_instance في لبلوك تكرر الرسالة مع تكرر التايمر وتأتي سواء كان هناك ريكورد جديد او لا وضعت التايمر لكي يحدث البيانات بدون بدلا موضع زر اكتب فيه execute_query ما اريد هو رسالة تاتي بعد ادخال اي ريكورد جديد "هذا يحدث في شاشة اخرى" تأتي في هذه الشاشة الرسالة فقط في حالة هناك ريكورد جديدوشكرا ارجوووووووو المساعدة تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة comment_169608 السلام عليكم أخي الكريم طالما انها شاشة مراقبة يبقى يمكنك عمل الاتيطبعا انت انشئت التايمر وهو 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 هتعمل جلوبال فريبال يوجد به عد الريكورد وفي كل مرة أثناء تنفيذ التايمر هيقارن وبناءا عليه يطلع الرسائل جرب وقوليموفق تقديم بلاغ
بتاريخ: 14 سبتمبر 200916 سنة كاتب الموضوع comment_169660 شكرا لك يا اخي لقد قمت بتجربة الكود ونجخ معي يا اخي ارجو ان تشرح عمل الكود جزاك الله خير تقديم بلاغ
بتاريخ: 14 سبتمبر 200916 سنة comment_169670 السلام عليكم الفكرة الاي في التريجر الاول when new form instance هعرف عدد الصفوف الاي موجودة ف الجدول وهخزنها في جلوبال فريبال وده بيحصل عند فتح الشاشة وطبعا تم انشاء التايمر======بالنسبة للتريجر الخاص ب expired للتايمر سيقوم بمعرفة عدد الحقول الاي في الجدول وتخزينها في متغير ومقارنة قيمة هذا المتغير بقيمة الجلوبال فريبال الاي اخذ القيمة وقت فتح الشاشة فلو وجد ان القيميتين متساويتين لايعمل شيءلان ده معناه ان لم يتم الادخال او حذف اما لو كانت قيمة المتغير أكبر من قيمة الجلوبال فريبال فمهناه انه تم ادخال بيانات وبكده يعرض لك رسالة تفيد بذلك وبه عدد الريكودر الاي تم ادخاله بعد كده مباشرة بجعل قيمة الجلوبال =قيمة المتغير حتى لاتظهر لك الرسالة على طول ====ونفس الفكرة في الحذف سيقارن ويعيطك الرسالة دي الفكرة العامة للموضوع لو في اي جزئية في الكود مش واضحة قولها كي اوضحها لك بإذن اللهموفق وكل عام وانتم بخير تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.