الانتقال إلى المحتوى

كيف امرر القيمة الى التقرير


nan740

Recommended Posts

انا عندي فورم يقوم المستخدم اختيار الاصناف منه وانا مسوي حقل نصي يضع فيه ارقام الاصناف اللي اختارها بالطريقة هذي 1,2,3,65,7, اسم هذا الحقل النصي dis_no
وبعدين امرر القيمه للتقرير ويطلع لي بيانات بناء على اللي اختارها المستخدم في الاستعلام حق التقرير مسوي انه قيمة الصنف تكون بين القيم اللي اختارها المستخدم وقمت باستخدام
activ_no n(act_no);

كود استعداء التقرير في الفورم

DECLARE
P_LIST  PARAMLIST;
act_c	char;
act_r char;
--	act_c2 char;

BEGIN

act_c:=:dis_no;
--act_nu:=:dis_no;
--act_c2:=:t2;
--act_nu:=to_number(act_c);

--act_r:=replace('act_c', ',');
P_LIST := CREATE_PARAMETER_LIST('MY_PLIST');
 add_parameter(P_LIST,'PARAMFORM',TEXT_PARAMETER,'NO');
 add_parameter(P_LIST,'MAXIMIZE',TEXT_PARAMETER,'YES');
 ADD_PARAMETER(P_LIST,'act_1',TEXT_PARAMETER,act_c);
--  ADD_PARAMETER(P_LIST,'act_2',TEXT_PARAMETER,act_c2);
 RUN_PRODUCT(REPORTS,'form_pass_activ_to',SYNCHRONOUS,RUNTIME,FILESYSTEM,P_LIST,NULL);
 DESTROY_PARAMETER_LIST(P_LIST);


END;








والكود في التقرير هو


SELECT ALL DEMARCATION.DEMR_NAME, ACTIVITIES.ACTV_NAME, NEW_BUILDING.FILE_NO,
NEW_BUILDING.RENTAL_NAME, NEW_BUILDING.CONTRACT_START, NEW_BUILDING.CONTRACT_END,
NEW_BUILDING.YEARLY_RENT, NEW_BUILDING.LAST_PAY_DATE
FROM NEW_BUILDING, ACTIVITIES, DEMARCATION
WHERE ((NEW_BUILDING.DEMR_CODE = DEMARCATION.DEMR_CODE
AND NEW_BUILDING.ACTV_NO = ACTIVITIES.ACTV_NO))
--AND new_building.MAIN_MUNC_CODE not in (1,9,10)
and [b]new_building.actv_no in (:act_1[/b]);

تم تعديل بواسطة Ahmad.Hasan
تنسيق الأكواد
رابط هذا التعليق
شارك

السلام عليكم و رحمة الله و بركاته

يمكن عمل ذلك باستخدام الـ Lexical Parameter

في الفورم قم بكتابة التالي



DECLARE
	P_LIST  PARAMLIST;
	act_c   char;
	act_r char;
BEGIN

 act_c := ' AND NEW_BUILDING.ACTV_NO IN (' || :dis_no || ')';


 P_LIST := CREATE_PARAMETER_LIST('MY_PLIST');
 add_parameter(P_LIST,'PARAMFORM',TEXT_PARAMETER,'NO');
 add_parameter(P_LIST,'MAXIMIZE',TEXT_PARAMETER,'YES');
 ADD_PARAMETER(P_LIST,'act_1',TEXT_PARAMETER,act_c);
 RUN_PRODUCT(REPORTS,'form_pass_activ_to',SYNCHRONOUS,RUNTIME,FILESYSTEM,P_LIST,NULL);
 DESTROY_PARAMETER_LIST(P_LIST);


END;



و في التقرير قم بكتابة التالي


SELECT ALL DEMARCATION.DEMR_NAME, ACTIVITIES.ACTV_NAME, NEW_BUILDING.FILE_NO,
NEW_BUILDING.RENTAL_NAME, NEW_BUILDING.CONTRACT_START, NEW_BUILDING.CONTRACT_END,
NEW_BUILDING.YEARLY_RENT, NEW_BUILDING.LAST_PAY_DATE
FROM NEW_BUILDING, ACTIVITIES, DEMARCATION
WHERE ((NEW_BUILDING.DEMR_CODE = DEMARCATION.DEMR_CODE
AND NEW_BUILDING.ACTV_NO = ACTIVITIES.ACTV_NO))
&act_l

رابط هذا التعليق
شارك

السلام عليكم و رحمة الله و بركاته

المثال المرفق يحتوي على تطبيق عملي للفكرة
المستخدم هو SCOTT

TEST_REP.rar

رابط هذا التعليق
شارك

اخوي اسف على ازعاجك هذي اكواد الفورم والريبوت تبعي تفذت فيه اللي قلت لي عليه بس ما نفع ممكن تشوف وين الخطا
مع العلم اني حاولت ارسل لك الملف بالمرفقات بس ما عرفت
كود الفورم

DECLARE
PL_ID	PARAMLIST;
 
BEGIN
PL_ID := GET_PARAMETER_LIST('MY_LIST');
IF NOT ID_NULL(PL_ID) THEN
	DESTROY_PARAMETER_LIST(PL_ID);
END IF;
PL_ID := CREATE_PARAMETER_LIST('MY_LIST');
 
:ACTIVITIES.DIS_NO := SUBSTR(:ACTIVITIES.DIS_NO, 1, LENGTH(:ACTIVITIES.DIS_NO) - 1); -- To remove the last comma from the text.
:ACTIVITIES.DIS_NO := 'AND WHERE ACTIVITIES.ACTV_NO IN (' || :ACTIVITIES.DIS_NO || ')';
add_parameter(PL_ID,'PARAMFORM',TEXT_PARAMETER,'NO');
 add_parameter(PL_ID,'MAXIMIZE',TEXT_PARAMETER,'YES');
ADD_PARAMETER(PL_ID, 'ACT_1', TEXT_PARAMETER, :ACTIVITIES.DIS_NO);
 
RUN_PRODUCT(REPORTS, 'form_pass_activ_to', SYNCHRONOUS, RUNTIME, FILESYSTEM, PL_ID, NULL);
 
END



-----------------------------------------------------------------------------------------------
كود الريبورت

SELECT ALL DEMARCATION.DEMR_NAME, ACTIVITIES.ACTV_NAME, NEW_BUILDING.FILE_NO,
NEW_BUILDING.RENTAL_NAME, NEW_BUILDING.CONTRACT_START, NEW_BUILDING.CONTRACT_END,
NEW_BUILDING.YEARLY_RENT, NEW_BUILDING.LAST_PAY_DATE
FROM NEW_BUILDING, ACTIVITIES, DEMARCATION
WHERE ((NEW_BUILDING.DEMR_CODE = DEMARCATION.DEMR_CODE
AND NEW_BUILDING.ACTV_NO = ACTIVITIES.ACTV_NO))
&act_1;



--------------------------------------------------------------------------
هذا كود زر الاضافه اللي مسويه


begin
  
if :dis_no is null then
  
:dis_no:=:actv_no;
:dis_name:=:actv_name;
else
  
:dis_no:=:dis_no ||','||:actv_no;
:dis_name:=:dis_name ||',' ||:actv_name;
end if;

تم تعديل بواسطة nan740
رابط هذا التعليق
شارك


اخوي اسف على ازعاجك هذي اكواد الفورم والريبوت تبعي تفذت فيه اللي قلت لي عليه بس ما نفع ممكن تشوف وين الخطا
مع العلم اني حاولت ارسل لك الملف بالمرفقات بس ما عرفت
كود الفورم
DECLARE
PL_ID	PARAMLIST;
 
BEGIN
PL_ID := GET_PARAMETER_LIST('MY_LIST');
IF NOT ID_NULL(PL_ID) THEN
	DESTROY_PARAMETER_LIST(PL_ID);
END IF;
PL_ID := CREATE_PARAMETER_LIST('MY_LIST');
 
:ACTIVITIES.DIS_NO := SUBSTR(:ACTIVITIES.DIS_NO, 1, LENGTH(:ACTIVITIES.DIS_NO) - 1); -- To remove the last comma from the text.
:ACTIVITIES.DIS_NO := 'AND WHERE ACTIVITIES.ACTV_NO IN (' || :ACTIVITIES.DIS_NO || ')';
add_parameter(PL_ID,'PARAMFORM',TEXT_PARAMETER,'NO');
 add_parameter(PL_ID,'MAXIMIZE',TEXT_PARAMETER,'YES');
ADD_PARAMETER(PL_ID, 'ACT_1', TEXT_PARAMETER, :ACTIVITIES.DIS_NO);
 
RUN_PRODUCT(REPORTS, 'form_pass_activ_to', SYNCHRONOUS, RUNTIME, FILESYSTEM, PL_ID, NULL);
 
END



-----------------------------------------------------------------------------------------------
كود الريبورت

SELECT ALL DEMARCATION.DEMR_NAME, ACTIVITIES.ACTV_NAME, NEW_BUILDING.FILE_NO,
NEW_BUILDING.RENTAL_NAME, NEW_BUILDING.CONTRACT_START, NEW_BUILDING.CONTRACT_END,
NEW_BUILDING.YEARLY_RENT, NEW_BUILDING.LAST_PAY_DATE
FROM NEW_BUILDING, ACTIVITIES, DEMARCATION
WHERE ((NEW_BUILDING.DEMR_CODE = DEMARCATION.DEMR_CODE
AND NEW_BUILDING.ACTV_NO = ACTIVITIES.ACTV_NO))
&act_1;



--------------------------------------------------------------------------
هذا كود زر الاضافه اللي مسويه


begin
 
if :dis_no is null then
 
:dis_no:=:actv_no;
:dis_name:=:actv_name;
else
 
:dis_no:=:dis_no ||','||:actv_no;
:dis_name:=:dis_name ||',' ||:actv_name;
end if;


سلام عليكم اخي اعلزيز اتوقع الخطاء هنا
:ACTIVITIES.DIS_NO := 'AND WHERE ACTIVITIES.ACTV_NO IN (' || :ACTIVITIES.DIS_NO || ')';

لانو بالتقرير يوجد كلمة where وشكر لااخ
a_disi
رابط هذا التعليق
شارك

السلام عليكم و رحمة الله و بركاته

لا يوجد أي إزعاج أخي الكريم

أولا إجعل الكود في زر الإضافة كالتالي:




:dis_no := :dis_no || :actv_no || ',';
:dis_name := :dis_name || :actv_name || ',';



ثم الكود في زر استدعاء التقرير كالتالي:

DECLARE
       PL_ID   PARAMLIST;
X_DIS_NO VARCHAR2(4000) := :ACTIVITIES.DIS_NO;

BEGIN
       PL_ID := GET_PARAMETER_LIST('MY_LIST');
       IF NOT ID_NULL(PL_ID) THEN
               DESTROY_PARAMETER_LIST(PL_ID);
       END IF;
       PL_ID := CREATE_PARAMETER_LIST('MY_LIST');

       :ACTIVITIES.DIS_NO := SUBSTR(:ACTIVITIES.DIS_NO, 1, LENGTH(:ACTIVITIES.DIS_NO) - 1); -- To remove the last comma from the text.
       :ACTIVITIES.DIS_NO := ' AND ACTIVITIES.ACTV_NO IN (' || :ACTIVITIES.DIS_NO || ')'; -- This sentence will be appended to the where clause in the report.
       add_parameter(PL_ID,'PARAMFORM',TEXT_PARAMETER,'NO');
  add_parameter(PL_ID,'MAXIMIZE',TEXT_PARAMETER,'YES');
       ADD_PARAMETER(PL_ID, 'ACT_1', TEXT_PARAMETER, :ACTIVITIES.DIS_NO);

       RUN_PRODUCT(REPORTS, 'form_pass_activ_to', SYNCHRONOUS, RUNTIME, FILESYSTEM, PL_ID, NULL);

:ACTIVITIES.DIS_NO := X_DIS_NO;

END



و الكود المكتوب في التقرير صحيح ليس فيه خطأ.

إذا لم يعمل معك الحل، قم بضغط الفورم و التقرير و إرساله مع الجداول المستخدمة.

و شكراً أيضاً للأخ يزن

تم تعديل بواسطة a_disi
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية