بتاريخ: 24 يونيو 201411 سنة comment_252362 السلام عليكم أرجو مساعدتي في حل مشكلة واجهتني. عندي جدول يحتوي على أسماء الموظفين ومعلوماتهم الشخصية (CODE_USER,NOM_USER,PREN_USER) - أريد أن أعرض الجدول كاملا في الفورم واقوم بإختيار أشخاص معيينن بإستعمال CHECK_BOX وفي الأخير أقوم بطباعة فقط الأشخاص الذين قمت بالتأشير عليهم في الفورم كما في الصورة مثلا : كيف أقون ببرمجة الفورم والتقرير . تم تعديل 24 يونيو 201411 سنة بواسطة chzizo81 تقديم بلاغ
بتاريخ: 24 يونيو 201411 سنة comment_252363 السلام عليكم أتوفع انه يوجد اكثر من حل انا شخصيا أفضل الحل الاتي 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 والله الموفق شكرا تقديم بلاغ
بتاريخ: 24 يونيو 201411 سنة comment_252366 السلام عليكم يرجى الاطلاع على هذا الموضوع: http://www.araboug.org/ib/index.php?showtopic=253&hl= تقديم بلاغ
بتاريخ: 24 يونيو 201411 سنة comment_252381 السلام عليكم أتوفع انه يوجد اكثر من حل انا شخصيا أفضل الحل الاتي 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 في التقرير وتبعت الباراميتر بقى من الفور مه تم تعديل 24 يونيو 201411 سنة بواسطة Ahmad.Hasan تقديم بلاغ
بتاريخ: 25 يونيو 201411 سنة كاتب الموضوع comment_252404 السلام عليكم يرجى الاطلاع على هذا الموضوع: 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 من الفورم تم تعديل 25 يونيو 201411 سنة بواسطة chzizo81 تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.