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

بتاريخ:

إخواني الكرام
السلام عليكم ورحمة الله وبركاته
في الواقع إن موضوع استدعاء التقارير من الفورم موضوع مهم جدا والأسئله فيه كثيرة ومن ضمن هذه الأسئله سؤال عجبني جدا من الأخ العزيز أمجد عن كيفية عمل تقرير يحتوي علي مجموعة من بيانات الموظف بمعلومية أرقام موظفين مختارة من الشاشة
والأخوه جزاهم الله كل الخير أجابوا عن السؤال بطرق متعدده تعكس وجهات نظر مختلفه وانا اطلعت عليها وعجبني المجهود المبذول
وأنا النهارده حابب أقدم إجابه بسيطه ومش معقده وتحقق هدفنا اللي هوه (إزاي أختار أرقام موظفين معينين وأطبع تقرير عنهم)
بداية أنا حشتغل علي جدول الموظفين EMP بتاع SCOTT
أولا: حنعمل جدول جديد فارغ عند SCOTT ونسميه EMP_NUMBER كما يلي

create table emp_number
(empno number(4))



وزاي منتو شايفين الجدول مكون من عمود واحد علشان يشيل أرقام الموظفين
ثانيا: نعمل التقرير بتاعنا علي جدول EMP بتاع SCOTT لكن نخلي ال SQL QUERY بتاعته كالتالي

select *
from emp where empno in (select * from emp_number)


ونعمل SAVE للتقرير ونسميه REP_TEST ونحفظه بصيغه RDF في أي مكان
ثالثا: نعمل الفورمه (الشاشه) بتاعتنا علي جدول EMP ونخلي ال STYLE بتاعها TABULAR
رابعا : نعمل CHECKBOX ونسميه EMPNO_CHECK وندخل علي ال PROPERTY PALLETE بتاعته ونخليها كما يلي
VALUE WHEN CHECKED Y
VALUE WHEN UNCHECKED N
CHECK BOX MAPPING OF OTHER VALUES UNCHECKED
DATABASE ITEM NO
DATA TYPE CHAR
بعدين نعمل عليه تريجر اسمه WHEN-CHECKBOX-CHANGED ونكتب فيه الكود ده

if checkbox_checked('empno_check') then
insert into emp_number values (:emp.empno);
commit;
else
delete from emp_number where empno = :emp.empno;
commit;
end if;


خامسا: نعمل تريجر علي مستوي الفورمه اسمه WHEN-NEW-FORM-INSTANCE ونكتب فيه الكود ده

execute_query;
:system.message_level := '5';
delete from emp_number; commit;


سادسا: في ال REPORT NODE اللي في OBJECT NAVIGATOR نعمل ريبورت ونسميه REPORT_SPEC طبعا هيكون مبني علي التقرير اللي سبق عملناه
سابعا:في ال PROGRAM UNITS NODE اللي في OBJECT NAVIGATOR نمل PROCEDURE ونسميه RUN_REPORT_OBJECT_PROC ونكتب فيه الكود ده

PROCEDURE run_report_object_proc 

 (VC_REPORTOJ VARCHAR2,
VC_REPORTSERVER VARCHAR2,
 vc_runformat varchar2)
IS
v_report_id Report_Object;
vc_ReportServerJob VARCHAR2(100);
vc_rep_status VARCHAR2(100);
vjob_id VARCHAR2(100);
BEGIN v_report_id:= FIND_REPORT_OBJECT(vc_reportoj);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_COMM_MODE,SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_DESTYPE,CACHE);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_DESFORMAT,vc_runformat);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_SERVER,vc_reportserver);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_OTHER,' paramform=no');
	
vc_ReportServerJob:=RUN_REPORT_OBJECT(V_report_id);
VJOB_ID := SUBSTR(VC_REPORTSERVERJOB, LENGTH(VC_REPORTSERVER)+ 2,LENGTH(VC_REPORTSERVERJOB)); 
vc_rep_status := REPORT_OBJECT_STATUS(vc_ReportServerJob);
IF vc_rep_status='FINISHED' THEN
	WEB.SHOW_DOCUMENT('/reports/rwservlet/getjobid'||VJOB_ID||'?server='||VC_REPORTSERVER,'_BLANK');
ELSE
	message ('Report failed with error message '||vc_rep_status);
END IF;

END;


ثامنا: نعمل PUSH BUTTON ونخلي ال LABEL بتاعه RUN REPORT ونعمل عليه تريجر WHEN-BUTTON-PRESSED ونكتب الكود ده

RUN_REPORT_OBJECT_PROC('REPORT_SPEC','rep10g','htmlcss');


وزي منتو شايفين السيرفر بتاعي اسمه REP10G وممكن تسمو أي إسم للسيرفر وطبعا هتشغلوا عن طريق START MENU بعدين RUN CMD وتكتبوا الكود ده

RWSERVER SERVER=REP10G START


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

codes.zip

بتاريخ:

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

الأخ / خالد

بداية اشكرك لك على حرصك على افادة الأخوة الأعضاء واعادة صياغة حل لمشكلة كتبت بالمنتدى منذ حوالي 6 سنوات

إضغط هنا : تحريك بيانات من الform الى الreport


ولكن هناك استفسار عن الحل الذى عرضته ... من خلال استخدام جدول يستخدم مؤقتا فى حفظ ارقام الموظفين المطلوب طباعة بياناتهم ... ثم يتم حذف البيانات بعد استدعاء التقرير

عندما يكون لديك اكثر من مستخدم يستخدم نفس التقرير ... فى نفس الوقت ... كيف يمكن معالجة حدوث هذا الإحتمال ؟

اعتقد انه سيتم اجراء تعديل على الحل السابق ... لمعالجة هذا الإحتمال الممكن حدوثه

شكرا لك مرة اخرى

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

الأخ العزيز أمجد
السلام عليكم ورحمة الله
أنا لما كتبت الموضوع كنت عارف كويس أنه طرح من ست سنين وأنا حاولت أقدم وجهة نظر جديده لا أكثر ولا أقل وأنا مهما ساهمت وعقبت في هذا المنتدي فسأظل بقعة ضوء صغيره بجوار الشموس الكبيره التي أضاءت المنتدى وأنت واحد منهم يا أمجد دى حاجه
الحاجه التانيه ملاحظتك في محلها ونحتاج لعمل تعديل كما يلي
ممكن نعمل عمود جديد في الجدول المؤقت يشيل أسماء ال users
بعد كده نعمل where condition علي العمود الجديد بحيث لما نعمل insert يدخل إسم الuser ورقم الموظف ولما يعمل delete يحذف فقط ما أدخله ال user وطبعا هنعدل في ال sql query report
أتمنى تكون الفكره وصلت ياأخي الحبيب أمجد وأنا أشكرك جدا علي تواصلك والشكر موصول للمنتدي

أخوك خالد حسن

بتاريخ:

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

شكرا لك على هذه الكلمات الطيبة ... والمشاعر الصادقة ... وهذه من صفات اعضاء منتدانا الحبيب ... الذى يجمعهم حب التعاون والمساعدة

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

شكرا لك على الاقتراح فى تعديل اسلوب الحل السابق

واعتقد ان هناك اساليب اخرى .... للتعامل مع فكرة الموضوع

واعتقد انه ستوجد مشاركات اخرى من الأعضاء ... لعرض افكار الحلول

والله الموفق

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

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

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

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

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

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.