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

key exit

Featured Replies

بتاريخ:

السلام عليكم
انا كاتب كود في key_exit trigger وهذا هو الكود
------------------------------------------
if :system.form_status ='CHANGED' THEN
alert_number:=show_alert('exit_alert');
if alert_number=alert_button1 then
:system.message_level:=25;
alert_number:=show_alert('save');
if alert_number=alert_button1 then
commit_form;
exit_form;
elsif alert_number=alert_button2 then
exit_form(no_commit);
else null;
end if;
end if;

elsif :system.mode = 'ENTER-QUERY' then
Set_Block_Property(:system.cursor_block,CURRENT_RECORD_ATTRIBUTE ,'default');
exit_form;

else
exit_form;

end if;


end ;

وبختصار هذا الكود يفحص عند الخروج اذا عمل المستخدم اي تغييرات على الفورم يعطي alert ويساله اذا اراد التخزين وان لم يعمل اي تغيير يخرج من الفورم
----------
في جدول اسمه user_events وفي هذا الجدول يتم تخزين كل شي عمله المستخدم من بحث وتعديل واضافة
انا اردت ان اخزن وقت الخروج من الفورم في هذا الجدول وهذا هو الكود على key _exit trigger

-------

declare
alert_number number;
v_log_out_time varchar2(100);
v_login_date varchar2(100);
v_log_in_time varchar2(100);
v_form_name varchar2(100);

begin

global_pkg.set_log_out_time(to_char(SYSDATE,'hh24:MI:ss'));
v_log_out_time:=global_pkg.get_log_out_time;
v_login_date:=global_pkg.get_login_date;
v_log_in_time :=global_pkg.get_log_in_time;
v_form_name :=global_pkg.get_form_name;

update user_events
set log_out_time =v_log_out_time
where user_name=:global.user_name and login_date=v_login_date and log_in_time=v_log_in_time and form_name=v_form_name;

commit_form;

الان المشكلة اذا المستخدم عمل تغيير و وكبس خروج تلقائيا ينفذ ال commit الثانية ويخزن ولا يسال المستخدم ان اراد التخزين
بمعنى اخر وين برايكم مناسب وضع الكود الثاني لتخزين وقت الخروج في الجدول

ملاحظة انا وضعت الكود لتعم الفائدة
وشكرا

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

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

بتاريخ:

الاخ الكريم
ضع التالي
فهذه الطريقة تفحص اذا نعم يقوم بالتخزين والاى يقوم بعمل rollback
استخدم التريجر التاليWHEN-WINDOW-CLOSED



if :system.form_status ='CHANGED' THEN
alert_number:=show_alert('exit_alert');
if alert_number=alert_button1 then
:system.message_level:=25;
alert_number:=show_alert('save');
if alert_number=alert_button1 then
commit_form;
exit_form;

elsif alert_number=alert_button2 then
exit_form(no_commit);
else null;
end if;
end if;

elsif :system.mode = 'ENTER-QUERY' then 
Set_Block_Property(:system.cursor_block,CURRENT_RECORD_ATTRIBUTE ,'default');
exit_form;

else
exit_form;

end if;


end;

 


استخدم هذا الكود في التريجر post-updateعلى مستوى الفورم

declare
alert_number number;
v_log_out_time varchar2(100);
v_login_date varchar2(100);
v_log_in_time varchar2(100);
v_form_name varchar2(100);

begin

global_pkg.set_log_out_time(to_char(SYSDATE,'hh24:MI:ss')); 
v_log_out_time:=global_pkg.get_log_out_time;
v_login_date:=global_pkg.get_login_date;
v_log_in_time :=global_pkg.get_log_in_time;
v_form_name :=global_pkg.get_form_name;

update user_events 
set log_out_time =v_log_out_time
where user_name=:global.user_name and login_date=v_login_date and log_in_time=v_log_in_time and form_name=v_form_name;

COMMIT;
EXCEPTION
when others then
DECLARE
  server_err               NUMBER         := abs(DBMS_ERROR_CODE);
  server_msg               VARCHAR2(2000) := DBMS_ERROR_TEXT;
  
BEGIN
rollback;
message('Error during insert: '||to_char(server_err) ||'-'||server_msg);

END;  

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

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

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

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

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

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

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.