بتاريخ: 9 ديسمبر 200916 سنة comment_178781 السلام عليكم عندى فورمه بعمل من خلالها بحث وده جزء من الكود الخاص بعمليه البحث elsif :dept is not null then v_whr :='department_id in (select department_id from departments where upper(department_name)=upper(:DEPT))'; :wh_it:='where '||v_whr; set_block_property('employees',onetime_where,v_whr); go_block('employees'); execute_query; وعامله تقرير على الموظفين على الفورمه دى المشكله ان لما بعمل pass للparameter الهو wh_it وهو بيمثل جمله الwhere للتقرير بيحصل مشكله ومش بيمل Run انا جربت فيه كتير ومتهيألى ان المشكله في قيمه :dept متهيألأى انه مش شايفها معرفش هل كلامى ده صح ولا غلط وهل في حل اقدر اتغلب منه على الجزء ده مع العلم ان جمله الwhere ألخاصه بالتقرير ده متغيره على حسب هعمل بحث بأيه تقديم بلاغ
بتاريخ: 10 ديسمبر 200916 سنة كاتب الموضوع comment_178837 ده كود البحث declare v_whr varchar2(200); begin if :name is not null then v_whr:='f_name||'' ''||l_name like''%'||:name||'%''' ; :wh_it:='where '||v_whr; set_block_property('employees',onetime_where,v_whr); go_block('employees'); execute_query; elsif :dept is not null then v_whr :='department_id in (select department_id from departments where upper(department_name)=upper(:DEPT))'; :wh_it:='where '||v_whr; set_block_property('employees',onetime_where,v_whr); go_block('employees'); execute_query; elsif :salary is not null then v_whr:='employee_id in(select emp_id from net_salaries where basic_sal=:salary)'; :wh_it:='where '||v_whr; set_block_property('employees',onetime_where,v_whr); go_block('employees'); execute_query; elsif :hdate is not null then v_whr:='hire_date='||':hdate'; :wh_it:='where '||v_whr; set_block_property('employees',onetime_where,v_whr); go_block('employees'); execute_query; elsif :rwd is not null then v_whr:='employee_id in(select emp_id from emp_rewards where month_id=:rwd)'; :wh_it:='where '||v_whr; set_block_property('employees',onetime_where,v_whr); go_block('employees'); execute_query; else :msg_screen:='ÚÝæÇ áÇíæÌÏ ÈíÇäÇÊ'; end if; end; وده الكود الخاص بال print declare pl paramlist; rep_id report_object; r_rep varchar2(100); rep_status varchar2(20); begin pl:=get_parameter_list('p_list'); if not id_null(pl) then destroy_parameter_list(pl); end if; pl:=create_parameter_list('p_list'); add_parameter(pl,'WH',text_parameter,:wh_it); rep_id:=find_report_object('sch'); set_report_object_property(rep_id,report_execution_mode,batch); set_report_object_property(rep_id,report_destype,cache); SET_REPORT_OBJECT_PROPERTY (rep_id,report_comm_mode,synchronous); set_report_object_property(rep_id,report_desformat,'htmlcss'); set_report_object_property(rep_id,report_server,'repserver90'); r_rep:=run_report_object(rep_id,pl); rep_status := REPORT_OBJECT_STATUS(r_rep); WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') LOOP rep_status := report_object_status(r_rep); END LOOP; IF rep_status = 'FINISHED' THEN web.show_document('http://127.0.0.1:8889/reports/rwservlet/getjobid'|| substr(r_rep,instr(r_rep,'_',-1)+1)||'?'||'server=repserver90', '_blank'); ELSE message(' Error when running report '); message(' Error when running report '); END IF; end; تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة كاتب الموضوع comment_178928 السلام عليكم لوسمحتم اذا حد عنده فكره عن المشكله دى يلريت يوضحها تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة comment_178929 هل ممكن اعرف عن طريق ماذا تبحثين ؟؟يعني مثلا البحث بالاسم ام الرقم ام ماذا ؟؟ تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة كاتب الموضوع comment_178931 ما هو كود البحث زي ما كاتباه فوق ممكن بالاسم او القسم او تاريخ التعيين او المرتب او المكافأه تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة comment_178934 اذا كان كود البحث الذي انتي كاتبيته شغال تمام اذا المشكلة تكون في التقرير هل استعلام التقرير شغال ؟ هل جربتي نفس ما تقومي به على الفورم نفس التقرير؟؟يعني مثالانا بحثت عن طريق الراتب ؟من خلال التقرير ؟ هل تظهر نتائج بالتقرير ؟ام ماذا ؟ تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة comment_178935 هل الباراميتر الذي موجود بكود الطباعة نفسه هو الذي في التقرير؟لماذا تضعين كلمة where مع تمرير الباراميترانتي كاتبة التالي :wh_it:='where '||v_whr;وهو نفس الذي تقومي بتمريره بالتقرير لماذا كلمة where مدمجة مع القيمة الناتجة؟؟؟ تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة كاتب الموضوع comment_178939 ايوه البارميتر الموجود في كود استدعاء الريبورت هو هو الموجود في الريبورت الاساسى انا هشرحلك الفكره انا عايزه اعرض بيانات موظفين بس جدول الموظفين مفهوش اسم القسم ولا في مرتب الموظف ولا مكافأت الموظف فعشان كده في كود البحث بغير جمله ال where ونفس الفكره في التقرير وعامله ال query من غير جمله ال where وكاتبه في اخر ال query lexical parameterومن الفورم ببعت جمله ال where العلى اساسها بينفذ ال query تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة comment_178944 اذا هل هذه الاسماء مرتبطة بجداول اخرى مثل جدول الااقسام وجدول الرواتب ؟انا عامل تقرير بيانات للموظفين بس مش هيك .. في كتير طرق اسهل بكتير من طريقتك بالتعامل مع البيانات يعني انتي بكل بساطة بتعملي تقرير للموظفين وبجملة الاستعلام تكتبي where emp_name =:Parameter1 or salary=:paramerter or deptno=:paramaeterومن الفورم بتمرري جميع الباراميترات واللي بيطابق الشرط بيستعلم فيه التقريرهذه الفكرة اسهل بكثير من اسلوبك اذا بدك ابعتيلي الفورم وجميع الجداول المتعلقة بالموضوع وانا رح اعملك التقرير بطريقة افضل واحسن من هذه وحسب الباراميترز التي تريدينها تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة كاتب الموضوع comment_178948 حاول توضحلى فكرتك اكتر لان برده بحاول ادور على فكره اسهل انا عندى التقرير هيظهر بيانات موظفين فقط بس المشكله انى بجيب البيانات عن طريق 3 جداول غير الموظفين departments ,net_salaries,emp_rewardsفلازم ال query الخاص بالريبورت تتحدد في علاقه جدول الموظفين بالجدول الهيتحدد من عمليه البحث فمش عارفه انت عايز تكتب في ال query الخاص بالريورت كل العلاقات مع الجدول وبعد كده تمرر البراميتر ولا ايه هجرب الفكره دى ولو اشتغلت هقولك تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة comment_178952 في التقرير بتعملي ثلاثة query لكل جدول queryومن ثم تربطيهم مع بعض عن طريق data linkوبتجيبي الاسماء اللي في الجداول متل اسم الادارة عن طريق function and cursor ومن ثم تستعلمي عن طريق الاسم او رقم الموظف او ايا شيء من خلالهمهذه هي فكرتي تقديم بلاغ
بتاريخ: 12 ديسمبر 200916 سنة كاتب الموضوع comment_178984 السلام عليكم انا مش عارفه الطريقه البتقول عليها او متهيألى متنفعش معايا كود البحث شغال كويس جدا وكذلك التقرير ده ال query الخاص بالتقرير SELECT ALL EMPLOYEES.EMPLOYEE_ID, EMPLOYEES.F_NAME||' '||EMPLOYEES.L_NAME as name, EMPLOYEES.HIRE_DATE, EMPLOYEES.ADDRESS, EMPLOYEES.BIRTH_DATE, EMPLOYEES.MILITRY_STATE, EMPLOYEES.RELIGION, EMPLOYEES.MARITAL_STATE FROM EMPLOYEES &wh و لما باجى عند التقرير واخد جمله من المفروض تتبعت من الفورم وطبعا بعوض عن قيمه المتغير بيتنفذ صحمثلا لالو بحثت عن طريق القسم الجمله الهتتبعت هى v_whr :='department_id in (select department_id from departments where upper(department_name)=upper(:DEPT))'; المشكله ان لما ببعت متغير بالشكل ده قيمه :dept مش بيتعوض عنها لانى جربت مره ان اكتب قيمه حقيقه ثابته من الفورم وعند استدعاء التقرير اتنفذ صح فبكده المشكله هى في قيمه :deptهل في اي حل يتناسب مع الفكره دى هو query واحد عندى وبغير جمله الwhere بس مش اكتر تقديم بلاغ
بتاريخ: 12 ديسمبر 200916 سنة comment_178987 ماشي اختي الكريمة بس هذي الطريقة غير صحيحة مئة بالمئة ولما بدنا نعمل تقرير ما بنعملو بهذي الطريقة اللي حضرتك بتتبعيها يوجد اسس وستاندرد متبعة لعمل التقارير ارجو منك اعادة التفكير بالموضوع وبناء التقرير من اول وجديد بطريقة افضل من هذه انا اعرف تماما انك تريدين عمل تقرير dynamic ولكن اذا كنت تريدين dynamic فاوراكل وفرت الكثير من الادوات يمكنك اذا استخدام oracle discovererارجو ان تكون وصلت فكرتي لك اختي الكريمة تقديم بلاغ
بتاريخ: 12 ديسمبر 200916 سنة comment_178993 السلام عليكم ورحمة الله بداية : قبل استدعاء امر مناداة التقرير يمنكك التأكد بمحتوى الجملة الشرطيه وهى v_whr من خلال امر اظهار بسيط وليكن message(v_whr); pause; اعتقد انه تم التعامل مع مكونات الشرط ككتلة واحدة ويجب فصل الجزء الاساسى من الشرط عن الجزء المحتوى للبيانات باستخدام العلامات ||ويبقى كالتالي v_whr :='department_id in (select department_id from departments where upper(department_name)=upper('||:DEPT||'))'; تقديم بلاغ
بتاريخ: 12 ديسمبر 200916 سنة كاتب الموضوع comment_179068 السلام عليكم اولا جزاكم الله كل خير على الرداخى ماهر انا مقولتش ان الطريقه دى صحيحه انا بحاول افكر في طريقه يوجد اسس وستاندرد متبعة لعمل التقارير ارجو منك اعادة التفكير بالموضوع وبناء التقرير من اول وجديد بطريقة افضل من هذه ماشى انا والله معاك بس انا لسه ملاقتش شغل عشان اعرف كل الحاجات دى اعتبرنا بنتعلم وانا معنديش اي اعتراض انى اعرف حاجات جديده بالعكس ياريت اخى امجد انا جربت الجمله الاخيره بدل الجمله العندى بس ظهر خطأ في عمليه البحثORA-00904: "IT": invalid identifierوده لانه لما بينفذ الاستعلام بيكون ده شكل الجمله where department_id in (select department_id from departments where upper(department_name)=upper(it)) تم تعديل 12 ديسمبر 200916 سنة بواسطة sara gamal تقديم بلاغ
بتاريخ: 12 ديسمبر 200916 سنة comment_179069 السلام عليكم ورحمة الله هل اسم الإدارة هى it فى هذه الحالة التنفيذ والإعداد سليم للأمر السابق ... طالما ظهر اسم الإدارة وهى itولكن يتبقى تحريك علامة التنصيص حول الاسم .... لتظهر مثل 'it'------------سؤال لماذا يستخدم أسم الإدارة (حرفي) فى امر ال where هل يمكن البحث برقم الإدارة (رقمي)فى هذه الحالة لن تظهر رسالة الخطأ الأخيره تقديم بلاغ
بتاريخ: 12 ديسمبر 200916 سنة كاتب الموضوع comment_179070 ماشى ما انا مع حضرتك انى لو حركت العلامه هتتنفذ بس كده رجعت للكود الاصلى وكود البحث هو الهيتنفذ بس كود استدعاء التقرير مش هيتنفذ دى قيمه البراميتر من خلال عمليه ال debug where department_id in (select department_id from departments where upper(department_name)=upper(:DEPT)) تقديم بلاغ
بتاريخ: 13 ديسمبر 200916 سنة comment_179088 حاولي تجربي كده ان شاء الله حيشتغل معاكي البحث على حسب فهمي لطلبك v_whr :='Department_Id In (Select Department_Id From Departments Where Upper (Department_Name) Like ''%'' || Upper ('''||:DEPT||''')|| ''%'')'; وبالتوفيق تقديم بلاغ
بتاريخ: 13 ديسمبر 200916 سنة كاتب الموضوع comment_179142 جزاكم الله كل خيرجزاك الله خيرا اخى احمد اتعملت تقديم بلاغ
بتاريخ: 13 ديسمبر 200916 سنة comment_179149 السلام عليكم ورحمة الله مبروك عليكم جميعا ... وشكرا للأخ أحمد يمكنك استخدام طريقة مفيدة فى عملية البحث المتقدم .... مشاركة سابقة بالمنتدى إضغط هنا : درس البحث المتقدم بـ Forms, البحث باكثر من متغير تقديم بلاغ
بتاريخ: 13 ديسمبر 200916 سنة comment_179150 الحمدلله انها اشتغلت ودعواتي بالتوفيق لي وللجميع،،،، تقديم بلاغ
بتاريخ: 13 ديسمبر 200916 سنة كاتب الموضوع comment_179153 جزاكم الله خيرا وجزاك الله خيرا اخى امجد على الرابط تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.