بتاريخ: 20 أغسطس 200916 سنة comment_167322 بسم الله الرحمن الرحيمالسلام عليكم ورحمه الله تعالي وبركاته,,,فى البداية بحب أشكر جميع العاملين فى المنتدي على الخدمات والمساعدة الى بقدموها للأعضاء ...وبصفتي أحد المستفيدين من المنتدي...حبيبت أقدم خدمة بسيطة للمنتدي وللأعضاء الطيبين الى فيه .طبعا انا مبتدأ فى الاوراكل ...تعلمت طريقة تصميم التقارير ومن ثم طريقة الربط مع الفورم وطريقة الاستدعاء ...سأحاول شرح الطريقة بالكامل لكي يسفيد الأعضاء .-------------------------------------------------------------انا راح أشتغل على حساب Scott ...لكي أستخدم جدول الموظفين ... والي مش عنده الحساب ...ممكن ينفذ كود الجدول ع أي حساب هوا عاوز...بالطبع لازم يدخل بيانات علشان عملية عرض التقرير. CREATE TABLE EMP ( EMPNO NUMBER (4,0) NOT NULL, ENAME VARCHAR2 (10), JOB VARCHAR2 (9), MGR NUMBER (4,0), HIREDATE DATE, SAL NUMBER (7,2), COMM NUMBER (7,2), DEPTNO NUMBER (2,0) ) فى البداية سنقوم بتصميم شاشة الإستدعاء ... وهي عبارة عن فورم...كما هو موضح فى الصورة. زي ما هوا واضح الفورم تحتوي على تكست لإدخال رقم الموظف علشان نستعلم او نطبع تقرير عن موظف معين...وأيضا يوجد على الفورم ....الزر الاول (run rep with param)علشان أستدعي التقرير مع إرسال باريميتر للتقرير ....يعني لازم أدخل رقم الموظف فى التكست الى عاوز أطبع تقرير فى بياناته الخاصة.الزر الثاني(run rep with out param) طبعا هاد الزر علشان استدعي تقرير بدون باريميتر ...علشان هيك فى التقرير راح يعرض كل الموظفين الى فى الشركة.الكود الخاص بالزر الأول (run rep with param) DECLARE v_rep_id REPORT_OBJECT; v_repjob VARCHAR2(100); v_job_id VARCHAR2(100); v_rep_status VARCHAR2(100); v_reportsrvr VARCHAR2(50) := 'rep10g'; v_runformat vARCHAR2(50) := 'HTMLCSS';--HTML HTMLCSS PDF BEGIN IF :NUM_REP_PRM IS NULL THEN RAISE FORM_TRIGGER_FAILURE; END IF; v_rep_id := FIND_REPORT_OBJECT('TMP_REPORT'); 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_DESTYPE, PRINTER); --SET_REPORT_OBJECT_PROPERTY(v_rep_id,REPORT_DESNAME,'ID_CARD'); 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, 'per_id=' || :NUM_REP_PRM ||' paramform=no'); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_FILENAME, 'd:\rep_emp.rdf'); 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; الكود الخاص بالزر الثاني(run rep with out param) DECLARE v_rep_id REPORT_OBJECT; v_repjob VARCHAR2(100); v_job_id VARCHAR2(100); v_rep_status VARCHAR2(100); v_reportsrvr VARCHAR2(50) := 'rep10g'; v_runformat vARCHAR2(50) := 'HTML';--HTML HTMLCSS PDF BEGIN v_rep_id := FIND_REPORT_OBJECT('TMP_REPORT'); 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_DESTYPE, PRINTER); --SET_REPORT_OBJECT_PROPERTY(v_rep_id,REPORT_DESNAME,'ID_CARD'); 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, 'D:\rep_emp.rdf'); 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; --------------------------------------------------------راح أتكلم فى الأول عن إستدعاء التقرير بدون باريمتر ...طبعا فى الكود فى شغلات لازم يغيرها المستخدم حسب ماهوا مشتغل التقرير بتاعه....راح نطلع للصورة فى الاول... REP10Gفى أول مربع ...لازم أغير إسم السيرفر الى أنا شغال عليه التقارير ...وهاد الكود الى انا مستخدمه علشان أشتغل السرفير الخاص بالتقارير.... rwserver server=rep10g start هاد الكود ممكن تشغله عن طريق ...تدخل على RUN ثم CMD تم تكتب هادا الكود.--------------------------------------------------------تاني مربع هادا إسم التقرير المؤقت الى راح أقوم بإنشاءه فى الفورم ...طريقة إنشاءه...من القائمة أقوم بالضغط على REPORTS ....لكي تظهر لي هذه الشاشة... أقوم بإختيار التقرير الى قمت بتصميمه على Report Buliderبعد ما أختار التقرير ...أدخل على خصائصه بالضغط على F4 ....لكي تظهر لي هذه الصورة .... بعدين بأقوم بمسح خانة الFilename ...لكي يصبح مثل هذه الصورة ---------------------------------------------------------------------------ثالث مربع راح يكون فى إسم التقرير الى قمت بتصميمه...ويفضل يكون التقرير زي منا عامل مباشر على البارتشن ..لانه أعتقد 10G بعمل مشاكل إذا كان إسم المجلد فيه فراغات.بهيك بكون أنا خلصت من إعداد الفورم الخاصة بإستدعاء التقرير.-----------------------------------------------------------------------------------بظل علينا إنه نعد التقرير الى عاوزينه يظهر ...قمت بإعداد تقرير سريع يعرض لكي كافة الموظفين فى الشركة...-------------------------------------------------------------------------------حاليا....الفورم هيك بكون جاهز إني لو ضغطت على(run rep with out param) راح يشتغل ويعرض لكي كل الموظفين الى فى الشركة ....ملفات الفورم ....و التقرير .... والكود ..... والصور ....موجودة فى المرفقات.-----------------------------------------------------------------------------يتبع--------------->>>>> Test_Form.rar Test_report.rar Picture.rar code.rar تقديم بلاغ
بتاريخ: 20 أغسطس 200916 سنة comment_167324 شكرا لك على المشاركه يا صديقيوننتظر المزيد ان شاء الله تقديم بلاغ
بتاريخ: 3 أكتوبر 200916 سنة comment_171454 شكرا كثير اخ iyad2006جزاك الله خيراالصراحة كثير استفدت من هذا الشرح لانه كثير مرتب و مبسط كنت متغلبة بموضوع استدعاء التقارير تقديم بلاغ
بتاريخ: 20 فبراير 201015 سنة comment_185461 السلام عليكم ورحمة الله الأخ / iyadشكرا لك ... وجزاك الله خيرا سيتم التثبيت ... لأهمية الموضوع واسلوب العرض الوافي تتنظر مشاركات اخرى متميزه تقديم بلاغ
بتاريخ: 23 مارس 201015 سنة comment_188094 حاولت ولاكن لم تنفع اما هناك طريقة اسهل من تلك والله هذا الموضوع لخمنا من كتر ما سئلت عنو ولكن لم يجبني احد لغاية الان ارجو الرد من اصحاب الخبرة العالية وشكرا للجميع تقديم بلاغ
بتاريخ: 20 أبريل 201015 سنة comment_190008 شكرا جزيلا لكلكن ممكن تساعدني عندما انقر على الزر ييفتح المستعرض وبه خطاممكن تشاهد الصوره المرفقه يا ريت تساعدني بسرعه لاني محتاج كثير New_Bitmap_Image.zip تقديم بلاغ
بتاريخ: 4 مايو 201015 سنة comment_191145 السلام عليكم لقد قمت بعمل تقرير باستخدام كريستال ريبورت 10 من النعروف ان الكريستال ربيورت يخرج امتداد RPT السوال هل يمكن استخدام الامتداد RPT بدلا من RDF عند استدعاء التقرير من فورم 10 G هذا السوال الى جميع الخبراء فى هذا المنتدىوشكرا جزيلا تقديم بلاغ
بتاريخ: 25 يوليو 201015 سنة comment_197428 شكرا اخي الكريم علي هذا الشرح المستفيض ولكن اخي الكريم ممكن لو تكرمت نغير الاستدعاء عن طريق رقم الموظف الي تاريخ تعيين الموظف حيث انني عدلت في المثال الي تاريخ تعيين الموظف ولكن الريبورت يعطي error وهو frm-41214: unable to 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) := 'rep10g'; v_runformat vARCHAR2(50) := 'HTMLCSS';--HTML HTMLCSS PDF BEGIN IF :NUM_REP_PRM IS NULL THEN RAISE FORM_TRIGGER_FAILURE; END IF; v_rep_id := FIND_REPORT_OBJECT('TMP_REPORT'); 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, 'per_date2=' || :NUM_REP_PRM ||' paramform=to_char(dd-mm-yyyy)'); SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_FILENAME, 'd:\rep_emp.rdf'); 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; والجمله الخاصه بالكويري الخاص بالريبورت SELECT ALL EMP.EMPNO, EMP.ENAME, EMP.JOB, EMP.MGR, EMP.HIREDATE, EMP.SAL, EMP.COMM FROM EMP where hiredate =:per_date2; تقديم بلاغ
بتاريخ: 21 نوفمبر 201015 سنة comment_203961 اخي الحبيب حاولنا نطبق المثال لكن لم يظهر لا التقرير ولا رسالة اخطاء ولا ندري ما المشكلةفرجاء المساعدة تقديم بلاغ
بتاريخ: 24 نوفمبر 201015 سنة comment_204157 السلام عليكم انا ظهرت عندي مشكلة عند تشغيل التقرير من ال report builder تظهر رسالة خطأ مكتوب فيها خطأ: فشل في تحديد موقع المستعرض حاول الاتصال مرة اخرى فكيف احدد المستعرض وخاصة انني حاولت ان احدده كما في الform builder لكن لم اتمكنوعند تشغيل التقرير من الفورم لا يظهر اي شيء ولا حتى رسالة خطأ وشكراً تقديم بلاغ
بتاريخ: 3 يناير 201115 سنة comment_206618 لسلام عليكم و رحمه الله و اجهتني رساله الخطاء التاليه ولا اعلم ما السبب مرفق بالصوره و شكرا تقديم بلاغ
بتاريخ: 23 فبراير 201114 سنة comment_209647 ارجو المساعدةعندي بيطلع خطا انو مش قادر يعمل اتصال مع الREP10Gمع اني نفذت الكود على الدوس الي بيشغل الREP10G تقديم بلاغ
بتاريخ: 21 أبريل 201114 سنة comment_210974 السلام عليكمالصور لا تظهر عندي حتى أقدر افهم الدرس فيا ريت تحكولي هي عندي المشكلة بس ولا مشكلة بالصور الي بالدرس وجزاكم الله خيرا تقديم بلاغ
بتاريخ: 29 مايو 201114 سنة comment_212589 السلام عليكم جميعامشرفي واعضاء المنتدىورحمة الله وبركاتهاخي العزيزشكرا لك على هذا الموضوع والذي كنت بامس الحاجة اليهولكن هناك بعض النقاط التي لم افهمها ولم اتوصل الى نتيجهفانا مازلت مبتدئة في عالم الاوراكل..الذي اعتقد انه لاتوجد نهاية اليهاخي العزيزفي الكود بعض العبارات قمت بتاشيرها بمربع احمرمنها .... - Rep10g وهو امس السيرفر وقلت يجب ان يتم تغيره..كيف يتم ذلك؟ واذا كنت اعمل على نفس الحاسبة Database and Clint ماذا افعل؟- ماذا تقصد بـ tmp_report ؟؟- كيف اقوم بخزن التقرير بالامتداد rdf and rep ؟؟ولك مني جزيل الشكراختكاتمنى ان اجد الاجابة عندكم سؤال اخير الا توجد دروس للتقارير 10g مثل الدروس المثبته للـ 6ihولكم مني جزيل الشكر اختكم تقديم بلاغ
بتاريخ: 5 أكتوبر 201114 سنة comment_216213 توجد طريقه لتصيب ريبورت سيرفر بحيث لا اشغله من امر الrun -->rwserver server=repsrvوهيrwserver -install repsrv autostart=yesبس للاسف تطلعلي رساله الخطاplese contact your administrator تقديم بلاغ
بتاريخ: 30 نوفمبر 201114 سنة comment_218131 السلام عليكمبس عني كم سؤال1- اسم الريبورت سيرر اضيله اسم الحاسبه الي راح يعمل عليها الريبورت سيرر حتى تعر الكلاينت اين هو مثلاrepsrv10\server\\2-ربت الكو بس تظهر حاله الريبورت Queadاي الكيو تقديم بلاغ
بتاريخ: 19 فبراير 201213 سنة comment_220955 سؤال للأخ الكريم iyad2006كيف أبعت ( أباصى ) أكتر من قيمة لكذا باراميترSET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_OTHER, 'p_pono='||:PONO||' paramform=no');فى هذا الجملة بنباصى براميتر واحدلو عاوز أباصى قيمتين لعدد 2 باراميترز تكون الجملة إزاىجزاكم الله خيراً تم تعديل 19 فبراير 201213 سنة بواسطة abdulrahman_o تقديم بلاغ
بتاريخ: 9 أبريل 201213 سنة comment_222981 شكرا على المجهود الرائع لكن ماذا لو كان لدينا اكثر من باراميتروليكن ايضاhiredate > 11/11/2005andsalary > 3000في انتظار الرد تقديم بلاغ
بتاريخ: 18 أبريل 201213 سنة comment_223424 شكرا على المجهود الرائع لكن ماذا لو كان لدينا اكثر من باراميتر وليكن ايضا hiredate > 11/11/2005 and salary > 3000 في انتظار الرد SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_OTHER, 'p_pono='||:PONO||' paramform=no||'&hiredate='||h); تقديم بلاغ
بتاريخ: 20 مايو 201213 سنة comment_224709 السلام عليكم شكرا اخي الكريم على هذا المجهود الكبير تحياتي لك اخي الكريم انا حاولت ان انفذ هذه الطريقة ولكن هنالك رسالة خطأ تظهر لي وهي FRM-41213: غير قادر على الوصول الى خادم التقارير rep10g فكيف استطيع حل هذه المشكلة ارجو الرد لاني بأمس الحاجة للرد السريع لطفا وجزاكم الله كل الخير تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.