بتاريخ: 23 سبتمبر 200718 سنة comment_110790 السلام عليكم و رحمة الله و بركاته ازيكم يا حماعة كل سنة و انتم طيبين انا بس الأول عايزة اشكر كل الناس اللي علي الforum و بتاخد من وقتها عشان ترد علي الاخوة الأعضاء بصراحة انا استفدت منه جداانا بقى عندى مشكلة خطيرة مش عارفة حلهاانا عاملة REPORTو عايزة connect عليه من form و مش نافع1-انا عملت ال report.rdf 2-عملت formو اضفت عليها ال report و ظبطت ال properties في ال property palettenameserver name destypedesformat3-عملت procedure reportserverjob varchar2(100); v_job_id varchar2(40); v_rep_status varchar2(40); v_server_name varchar2(20); vc_url varchar2(100); BEGIN v_server_name:='Rep_ORACLE_SERVER'; set_report_object_property (report_id,report_server,'REP_ORACLE_SERVER'); set_report_object_property(report_id,REPORT_COMM_MODE,SYNCHRONOUS); SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE,CACHE); SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESFORMAT,'HTMLCSS'); reportserverjob:=run_report_object(report_id); v_job_id:=substr(reportserverjob,length(v_server_name)+2,length(reportserverjob)); v_rep_status:=report_object_status(reportserverjob); /*WHILE v_rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED', null) LOOP v_rep_status:=REPORT_OBJECT_STATUS(reportserverjob); END LOOP;*/ IF v_rep_status='FINISHED' THEN web.show_document('/reports/rwservlet/getjobid'||v_job_id||'?server='||v_server_name,'_blank'); else message('Report failed with error message'||v_rep_status); end if; END; 4-و ضفت button علي الformو حطيت فيه الكود دة declare report_id report_object; v_rep varchar2(20); begin report_id:=find_report_object('Report5'); v_rep:=run_report_object(report_id); cal_report(report_id); 5-شغلت السيرفير و نشطتهاعمل run لل report تطلع لى error message بتقول FRM-41214 unable to run report ايه الحل؟؟؟؟؟؟؟؟؟؟؟؟؟انا كمان باحاول ادخل علي url خادم الreport مش عارفةافيدونىىىىىىىىىى افادكم الله تقديم بلاغ
بتاريخ: 23 سبتمبر 200718 سنة comment_110798 السلام عليكم و رحمه الله و بركاتهبداية نبدأ بعمل السيرفر الخاص بالــــ Report From Start Menu >> Choose RUn >>> Then Type CMD >>> Then Type this command rwserver -install server=<اسم السيرفر < الامر السابق ده فى حاله استخدم الــ Report 10g R1 اما فى حاله R2 الاصدار الثانى من الـــ Report 10g حنستخدم الامر rwserver server= اسم السيرفر بعد عمل الــ Report من خلال الـــ Report Builder و فتحه فى الفورم بنقوم بعمل procedure من خلال Program Unit Node مثلا حنسميه test PROCEDURE TEST IS repid REPORT_OBJECT; v_rep VARCHAR2(100); rep_status VARCHAR2(20); BEGIN repid := find_report_object('اسم التقرير'); SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE,RUNTIME); SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS); SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,CACHE); SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,'htmlCSS'); SET_REPORT_OBJECT_PROPERTY(repid,REPORT_SERVER,'اسم السيرفر'); SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER,'paramform=no date1='||:block20.TEXT_ITEM9||' date2='||:block20.TEXT_ITEM8); v_rep := RUN_REPORT_OBJECT(repid); rep_status := REPORT_OBJECT_STATUS(v_rep); WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') LOOP rep_status := report_object_status(v_rep); END LOOP; IF rep_status = 'FINISHED' THEN WEB.SHOW_DOCUMENT('http://localhost:8888/reports/rwservlet/'||'getjobid'|| substr(v_rep,instr(v_rep,'_',-1)+1)||'?'||'server=اسم السيرفر','_blank'); ELSE message('Error when running report'); END IF; END; بعد كده حنضع تريجر على Button يكون When button Pressed و ده حيكون وظيفته انه ينادى على الــ Procedure اللى من خلاله حيشغل الــ Report When Button Pressed Trigger On Button Test; كأننا بنادى عليه من داخل الــ Block تقديم بلاغ
بتاريخ: 23 سبتمبر 200718 سنة comment_110799 الأخ / Fabled Warriorاين نضع اسم التقرير... والدليل الذى يحتوى التقرير .. وامر الاتصال بقاعدة البيانات وكيف يمكن عدم تثبيت اسم الدليل داخل كل برنامج ... وايضا عدم تثبيت امر الاتصال داخل البرنامج وهذ السؤال بغرض : امكانية نقل البرنامج من دليل الى اخر أو امكانية تغييراسم قاعدة البيانات هل يمكن استخدام اوامر ال global او تثبيت اسم دليل التقارير داخل ال registery شكرا لك لدى 50 تقرير بالنظام يتم استدعائهم من ال menu .. كيف يكون ذلك تقديم بلاغ
بتاريخ: 23 سبتمبر 200718 سنة comment_110819 السلام عليكم و رحمه الله و بركاتهازيك يا امجد عامل ايه ان شاء الله تكون بخير شوف يامان بالنسبه للسؤال الاول الخاص بمكان اسم التقرير و كده repid := find_report_object('اسم التقرير'); ذى ما انت لحظت فى الكود اللى انا كتبته فى الرد الاول لى كان فيه العباره السابقه و دى بعوض فيها عن اسم التقرير بــ Repid لانى استخدمت معاه الباكدج الخاصه بأيجاد مكان التقرير اللى انا ذكرت اسمه يعنى انا بكتب اسم التقرير مره واحده و بعوض عنه بالمتغير اللى انا عطيته ليه تمام اما امر الاتصال بقاعده البيانات انا مش فاهم انت تقصد ايه ما انت كده كده بتكون متصل بالقاعده لانك بتاندى التقرير من داخل الفورمطيب اما بالنسبه للجزء الخاص بتاع انك تنادى Report من Menu و الله دى فكره بجد هايله و انا طلعت بفكره ممكن تكون قديمه بس عمليه تخيل مثلا اننا حنعمل بلوك و البلوك ده حيحتوى على Buttons بعدد التقارير بتعتنا تمام و مكتوب فيها الكود اللى حتنادى فيه على التقرير ذى ما انا قلت مسبقا طيب المطلوب اننا بدل ما نظهر الازرار دى علشان نضغط عليها كل مره علشان نشغل التقرير اننا نكتبها فى Menu مثلا تخيل ان عندى زر اسمه TestButton عليه تريجر When Button Pressed و مكتوب فيه اسم البروسيدجر اللى بينادى عليه علشان يشغل الريبورت تمام و انا مش هظهره على الكانفسو حعمل مينيو مثلا تحتوى على TestReport المفروض لما ادوس عليها انها تفعل التريجر اللى موجود على الزر testbutton الكود حيكون اذاى go_item(Block.item) طبعا هنا حذكر اسم البلوك و الايتم اللى حتكون بأسم Test BUtton Execute_trigger(when-Button-Pressed); وده علشان يفعل التريجر اللى على الزر يعنى دى فكرتى و ممكن يكون فى حد عنده فكره افضل و فوق كل ذى علم عليم تقديم بلاغ
بتاريخ: 24 سبتمبر 200718 سنة comment_110826 اخى العزيز / Fabled Warriorشكرا لاهتمامك ...حسب ما فهمت أن أمر الfind الهدف منه ارجاع ال REPORT_ID الخاص بالتقرير ..( وفى نفس الوقت التأكد من ان خصائص الاسم المعرف فى الفورم مثل report5 فى المشاركة الاولى أو report4 فى المثال القادم ... تكون سليمه من حيث اسم التقرير ومكان وجوده على الديسك )حتى يمكن التعامل مع ال Report_ID باى امر من الاوامر الجاهزه لتشغيل التقرير مثل run_report_object repid := find_report_object('اسم التقرير'); أى ان المتغير الذى يوجد مع امر الfind ليس هو اسم التقرير الحقيقى والمنشأ باستخدام برنامج اعداد التقرير والذى قد يكون امتداده jsp or rdfولكن هو الاسم الموجود داحل الnafigator داخل ال form مثل report4 or report 5 كما هو معنا بالمشاركة الحالية كامثله ومن خصائص report4 توجد معلومه عن اسم التقرير الاصلى واسم الدليل ... ( كل هذا الموضوع... لانى اريد أن أعرف كيفيه جعل اسم الدليل الذى يحتوى تقارير النظام اسم متغير ... وليس اسم ثابت ) شرح الامر ... من هنـــــاFIND_REPORT_OBJECT Built-in Description Returns the report_id for a specified report. You can use this ID as a parameter for other built-ins, such as RUN_REPORT_OBJECT . SyntaxFUNCTION FIND_REPORT_OBJECT (report_name VARCHAR2); Built-in Type unrestricted procedure Returns REPORT_OBJECT Enter Query Mode yes Parametersreport_name Specifies the unique name of the report to be found. FIND_REPORT_OBJECT ExampleDECLARE repid REPORT_OBJECT; v_rep VARCHAR2(100); BEGIN repid := find_report_object('report4'); v_rep := RUN_REPORT_OBJECT(repid); .... END; ===========جارى دراسة الاقتراح الثاني .. وان كنت احتاج الى استدعاء تقارير النظام مباشرة من الmenu بدون التعامل مع الformشكرا لك مرة اخرى تقديم بلاغ
بتاريخ: 24 سبتمبر 200718 سنة كاتب الموضوع comment_110883 و الله شكرا جدا افدتنى جزاك الله كل خيرمعلش سؤال تانى هو انا ممكن ابعت parameter و هو مش موجود عندى فى itemو لا الاحسن فى الحالة دى لو استخدمت global variable تقديم بلاغ
بتاريخ: 20 أبريل 20169 سنة comment_273821 انا عندى مشكلة donot run report DECLARE v_rep_id REPORT_OBJECT ; v_repjob VARCHAR2(100); v_job_id VARCHAR2(100); v_rep_status VARCHAR2(100); v_reportsrvr VARCHAR2(50) := '10g'; v_runformat vARCHAR2(50) := 'HTML'; BEGIN v_rep_id := FIND_REPORT_OBJECT('REPORT13'); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_COMM_MODE, SYNCHRONOUS); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_DESTYPE, CACHE); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_SERVER, v_reportsrvr); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_DESFORMAT, v_runformat); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_OTHER, 'paramform=no'); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_FILENAME,'E:\report\t.jsp'); v_repjob := RUN_REPORT_OBJECT(v_rep_id); v_job_id := SUBSTR(v_repjob, LENGTH(v_reportsrvr) + 2, LENGTH(v_repjob) ); v_rep_status := REPORT_OBJECT_STATUS(v_repjob); IF v_rep_status = 'FINISHED' THEN WEB.SHOW_DOCUMENT('/reports/rwservlet/getjobid' || v_job_id ||'?server=' || v_reportsrvr || '', '_blank'); ELSE message('Report failed with error message '); END IF; CLEAR_FORM; END; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.