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

بتاريخ:

السلام عليكم

 

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

 

عندي جدول يحتوي على أسماء الموظفين ومعلوماتهم الشخصية  (CODE_USER,NOM_USER,PREN_USER)

 

 

- أريد أن أعرض الجدول كاملا  في الفورم واقوم بإختيار أشخاص معيينن بإستعمال  CHECK_BOX 

 

 

وفي الأخير أقوم بطباعة فقط الأشخاص الذين قمت بالتأشير عليهم في الفورم

 

كما في الصورة مثلا :

 

820741Sanstitre.png

 

 

كيف أقون ببرمجة الفورم والتقرير .

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

بتاريخ:

السلام عليكم

أتوفع انه يوجد اكثر من حل 

انا شخصيا أفضل الحل الاتي

1- create template Table 

     This template table will hold the checked Employees 

       What i Mean that you should insert the checked Employees into that template Table

       By using simple Loop

2- Build the required Report depending on that Template table

3- delete the record or truncate the table after printing out the report

 والله الموفق

شكرا

بتاريخ:

السلام عليكم

يرجى الاطلاع على هذا الموضوع:

 

http://www.araboug.org/ib/index.php?showtopic=253&hl=

بتاريخ:

السلام عليكم

أتوفع انه يوجد اكثر من حل 

انا شخصيا أفضل الحل الاتي

1- create template Table 

     This template table will hold the checked Employees 

       What i Mean that you should insert the checked Employees into that template Table

       By using simple Loop

2- Build the required Report depending on that Template table

3- delete the record or truncate the table after printing out the report

 والله الموفق

شكرا

متهيألي انت قصدك temporary table يا باشا

المهم

انت ممكن تعرضهم واحد ورا التاني , يعني تفتح التقرير الاول وبعدين تقفله فيفتح التاني اوتوماتيك من غير انت ما تعمل حاجة .

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

خد الطريقة الاولي

declare
param paramlist ;
begin
param := create_parameter_list('tmp') ;

................ وكمل انت بقى الجزء ده , ابحث عن ازاي تعمل باراميتر ليست بس اعمل GET_PARAMETER_LIST الاول .

المهم

بعد ما تنشأها هتضيف باراميتر عن طريق ADD_PARAMETER

- كل ده بقى يا ريس جوه لووب

يعني هتقول

BEGIN
GO_BLOCK('BLOCK_NAME') ;
FIRST_RECORD
LOOP
IF CHECKBOX = 'Y'
THEN
GET_PARAMETER_LIST
THEN
DESTROY IT IF IT IS EXIST
THEN
ADD_PARAMETER
THEN

NEXT_RECORD ;
ELSE
NEXT_RECORD;
END IF ;
EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE' ;
END LOOP ;
END ;

وفي التقرير بقى هتخلي جملة السيليكت بتعتك في الكويري

WHERE EMPNO = _EMPNO

الي شايل رقم الموظف الي جاي من الفورمه مثلا

بس كده

NOT TESTED

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

تم تعديل بواسطة Ahmad.Hasan

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

السلام عليكم

يرجى الاطلاع على هذا الموضوع:

 

http://www.araboug.org/ib/index.php?showtopic=253&hl=

 

شكرا على الرابط.   والله فكرة ممتازة لم تخطر على بالي

 

الحل:

1- نقوم بعمل check box ولكن لا يكون database item بحيث ان نعمله في الـ user block ولكن نغير خاصية database item الى no

2- نعمل function تقوم بارجاع الـwhere cluse بحث يتم ارسالها باستخدام الـ parameter الى الreport

FUNCTION Get_Cond RETURN VARCHAR2
IS
Cond varchar2(2000) := '(1=2)';
BEGIN
    go_block('user');
    first_record;
  Loop
      If :CHECK_BOX=1 Then
    Cond:=Cond || ' OR code_user=' || :code_user;
      End if;
      next_record;
      Exit when :system.last_record = 'TRUE';
  End loop;
Return ('Where ' || Cond) ;
END;

3- في زر استدعا التقرير نستخدم  الكود   مع تبديل قيمة الـparameter المسمى p1 الى قيمة الـfunction كالاتي

Declare
PL paramlist;
Begin
PL:=create_parameter_List('p1');
add_parameter(PL,'p1',text_parameter,get_cond);
add_parameter(PL,'PARAMFORM',text_parameter,'NO');
Run_product(Reports,'rep.rdf',asynchronous,RunTime,FileSystem,PL);
Destroy_Parameter_List(PL);
End;

4 -الان نعدل الـQuery الموجود في الـReport الى الاتي

Select * From user &p1;

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

في الأخير  حسب المثال المدرج في الصورة :  الـQuery يصبح كالأتي

select * from user  Where (1=2) OR code_user=1 OR code_user=3 OR code_user=4

وبالتالي أصبحنا نتحكم في  الـQuery من الفورم

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

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

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

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

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

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

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.