iyad2006 بتاريخ: 20 أغسطس 2009 تقديم بلاغ مشاركة بتاريخ: 20 أغسطس 2009 بسم الله الرحمن الرحيمالسلام عليكم ورحمه الله تعالي وبركاته,,,فى البداية بحب أشكر جميع العاملين فى المنتدي على الخدمات والمساعدة الى بقدموها للأعضاء ...وبصفتي أحد المستفيدين من المنتدي...حبيبت أقدم خدمة بسيطة للمنتدي وللأعضاء الطيبين الى فيه .طبعا انا مبتدأ فى الاوراكل ...تعلمت طريقة تصميم التقارير ومن ثم طريقة الربط مع الفورم وطريقة الاستدعاء ...سأحاول شرح الطريقة بالكامل لكي يسفيد الأعضاء .-------------------------------------------------------------انا راح أشتغل على حساب 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 4 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
جلال شواقفه بتاريخ: 20 أغسطس 2009 تقديم بلاغ مشاركة بتاريخ: 20 أغسطس 2009 شكرا لك على المشاركه يا صديقيوننتظر المزيد ان شاء الله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Super Nany بتاريخ: 3 أكتوبر 2009 تقديم بلاغ مشاركة بتاريخ: 3 أكتوبر 2009 شكرا كثير اخ iyad2006جزاك الله خيراالصراحة كثير استفدت من هذا الشرح لانه كثير مرتب و مبسط كنت متغلبة بموضوع استدعاء التقارير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 20 فبراير 2010 تقديم بلاغ مشاركة بتاريخ: 20 فبراير 2010 السلام عليكم ورحمة الله الأخ / iyadشكرا لك ... وجزاك الله خيرا سيتم التثبيت ... لأهمية الموضوع واسلوب العرض الوافي تتنظر مشاركات اخرى متميزه اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ismailer بتاريخ: 23 مارس 2010 تقديم بلاغ مشاركة بتاريخ: 23 مارس 2010 حاولت ولاكن لم تنفع اما هناك طريقة اسهل من تلك والله هذا الموضوع لخمنا من كتر ما سئلت عنو ولكن لم يجبني احد لغاية الان ارجو الرد من اصحاب الخبرة العالية وشكرا للجميع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
المسافر85 بتاريخ: 6 أبريل 2010 تقديم بلاغ مشاركة بتاريخ: 6 أبريل 2010 بارك الله فيك اخي العزيز ورزقك الخير اينما كنت اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jlz بتاريخ: 20 أبريل 2010 تقديم بلاغ مشاركة بتاريخ: 20 أبريل 2010 شكرا جزيلا لكلكن ممكن تساعدني عندما انقر على الزر ييفتح المستعرض وبه خطاممكن تشاهد الصوره المرفقه يا ريت تساعدني بسرعه لاني محتاج كثير New_Bitmap_Image.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
scince بتاريخ: 22 أبريل 2010 تقديم بلاغ مشاركة بتاريخ: 22 أبريل 2010 شكراً جزيلاً لك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mahlawy بتاريخ: 27 أبريل 2010 تقديم بلاغ مشاركة بتاريخ: 27 أبريل 2010 شكرا عبى الشرح الوافى اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
hesham helmy بتاريخ: 4 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 4 مايو 2010 السلام عليكم لقد قمت بعمل تقرير باستخدام كريستال ريبورت 10 من النعروف ان الكريستال ربيورت يخرج امتداد RPT السوال هل يمكن استخدام الامتداد RPT بدلا من RDF عند استدعاء التقرير من فورم 10 G هذا السوال الى جميع الخبراء فى هذا المنتدىوشكرا جزيلا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
aboushaheen بتاريخ: 25 يوليو 2010 تقديم بلاغ مشاركة بتاريخ: 25 يوليو 2010 شكرا اخي الكريم علي هذا الشرح المستفيض ولكن اخي الكريم ممكن لو تكرمت نغير الاستدعاء عن طريق رقم الموظف الي تاريخ تعيين الموظف حيث انني عدلت في المثال الي تاريخ تعيين الموظف ولكن الريبورت يعطي 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; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
medo_2005 بتاريخ: 2 أغسطس 2010 تقديم بلاغ مشاركة بتاريخ: 2 أغسطس 2010 زكاة العلم نشرةبارك الله فيك اخى الكريم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
essam_ slama بتاريخ: 21 نوفمبر 2010 تقديم بلاغ مشاركة بتاريخ: 21 نوفمبر 2010 اخي الحبيب حاولنا نطبق المثال لكن لم يظهر لا التقرير ولا رسالة اخطاء ولا ندري ما المشكلةفرجاء المساعدة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
essam_ slama بتاريخ: 24 نوفمبر 2010 تقديم بلاغ مشاركة بتاريخ: 24 نوفمبر 2010 السلام عليكم انا ظهرت عندي مشكلة عند تشغيل التقرير من ال report builder تظهر رسالة خطأ مكتوب فيها خطأ: فشل في تحديد موقع المستعرض حاول الاتصال مرة اخرى فكيف احدد المستعرض وخاصة انني حاولت ان احدده كما في الform builder لكن لم اتمكنوعند تشغيل التقرير من الفورم لا يظهر اي شيء ولا حتى رسالة خطأ وشكراً اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
najed بتاريخ: 3 يناير 2011 تقديم بلاغ مشاركة بتاريخ: 3 يناير 2011 لسلام عليكم و رحمه الله و اجهتني رساله الخطاء التاليه ولا اعلم ما السبب مرفق بالصوره و شكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
salima بتاريخ: 4 يناير 2011 تقديم بلاغ مشاركة بتاريخ: 4 يناير 2011 السلام عليكم بارك الله فيك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
saleemco87 بتاريخ: 23 فبراير 2011 تقديم بلاغ مشاركة بتاريخ: 23 فبراير 2011 ارجو المساعدةعندي بيطلع خطا انو مش قادر يعمل اتصال مع الREP10Gمع اني نفذت الكود على الدوس الي بيشغل الREP10G اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abedfree بتاريخ: 21 أبريل 2011 تقديم بلاغ مشاركة بتاريخ: 21 أبريل 2011 السلام عليكمالصور لا تظهر عندي حتى أقدر افهم الدرس فيا ريت تحكولي هي عندي المشكلة بس ولا مشكلة بالصور الي بالدرس وجزاكم الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
roro2005 بتاريخ: 29 مايو 2011 تقديم بلاغ مشاركة بتاريخ: 29 مايو 2011 السلام عليكم جميعامشرفي واعضاء المنتدىورحمة الله وبركاتهاخي العزيزشكرا لك على هذا الموضوع والذي كنت بامس الحاجة اليهولكن هناك بعض النقاط التي لم افهمها ولم اتوصل الى نتيجهفانا مازلت مبتدئة في عالم الاوراكل..الذي اعتقد انه لاتوجد نهاية اليهاخي العزيزفي الكود بعض العبارات قمت بتاشيرها بمربع احمرمنها .... - Rep10g وهو امس السيرفر وقلت يجب ان يتم تغيره..كيف يتم ذلك؟ واذا كنت اعمل على نفس الحاسبة Database and Clint ماذا افعل؟- ماذا تقصد بـ tmp_report ؟؟- كيف اقوم بخزن التقرير بالامتداد rdf and rep ؟؟ولك مني جزيل الشكراختكاتمنى ان اجد الاجابة عندكم سؤال اخير الا توجد دروس للتقارير 10g مثل الدروس المثبته للـ 6ihولكم مني جزيل الشكر اختكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ام طيبه بتاريخ: 5 أكتوبر 2011 تقديم بلاغ مشاركة بتاريخ: 5 أكتوبر 2011 توجد طريقه لتصيب ريبورت سيرفر بحيث لا اشغله من امر الrun -->rwserver server=repsrvوهيrwserver -install repsrv autostart=yesبس للاسف تطلعلي رساله الخطاplese contact your administrator اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ام طيبه بتاريخ: 30 نوفمبر 2011 تقديم بلاغ مشاركة بتاريخ: 30 نوفمبر 2011 السلام عليكمبس عني كم سؤال1- اسم الريبورت سيرر اضيله اسم الحاسبه الي راح يعمل عليها الريبورت سيرر حتى تعر الكلاينت اين هو مثلاrepsrv10\server\\2-ربت الكو بس تظهر حاله الريبورت Queadاي الكيو اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdulrahman_o بتاريخ: 19 فبراير 2012 تقديم بلاغ مشاركة بتاريخ: 19 فبراير 2012 (معدل) سؤال للأخ الكريم iyad2006كيف أبعت ( أباصى ) أكتر من قيمة لكذا باراميترSET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_OTHER, 'p_pono='||:PONO||' paramform=no');فى هذا الجملة بنباصى براميتر واحدلو عاوز أباصى قيمتين لعدد 2 باراميترز تكون الجملة إزاىجزاكم الله خيراً تم تعديل 19 فبراير 2012 بواسطة abdulrahman_o اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
omogun بتاريخ: 9 أبريل 2012 تقديم بلاغ مشاركة بتاريخ: 9 أبريل 2012 شكرا على المجهود الرائع لكن ماذا لو كان لدينا اكثر من باراميتروليكن ايضاhiredate > 11/11/2005andsalary > 3000في انتظار الرد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ام طيبه بتاريخ: 18 أبريل 2012 تقديم بلاغ مشاركة بتاريخ: 18 أبريل 2012 شكرا على المجهود الرائع لكن ماذا لو كان لدينا اكثر من باراميتر وليكن ايضا hiredate > 11/11/2005 and salary > 3000 في انتظار الرد SET_REPORT_OBJECT_PROPERTY(v_rep_id, REPORT_OTHER, 'p_pono='||:PONO||' paramform=no||'&hiredate='||h); اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
shahad s.w بتاريخ: 20 مايو 2012 تقديم بلاغ مشاركة بتاريخ: 20 مايو 2012 السلام عليكم شكرا اخي الكريم على هذا المجهود الكبير تحياتي لك اخي الكريم انا حاولت ان انفذ هذه الطريقة ولكن هنالك رسالة خطأ تظهر لي وهي FRM-41213: غير قادر على الوصول الى خادم التقارير rep10g فكيف استطيع حل هذه المشكلة ارجو الرد لاني بأمس الحاجة للرد السريع لطفا وجزاكم الله كل الخير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.