PDA

View Full Version : قرار دادن یک متن بدون تکرار در کنار MasterData در FastReport



nasr
شنبه 20 تیر 1383, 11:35 صبح
یه مشکل در
سلام
من یه مشکلی در FastReport دارم و اون اینکه
در اول هر MasterData یه متنی می خوام قرار بگیره با توجه به اینکه هر فیلدی درMasterData قرار دهیم اگر اون ردیف شامل چند تا رکورد باشه به تعداد ردیفها اون Memo نیز تکرار می شود

همونطور که در عکس مشخص کرده ام می خوام اون Memo هایی که دور اونها خط کشیده ام فقط یک بار تکرار شود

امیدوارم منظورم را متوجه شده باشید
باتشکر

moradi_am
یک شنبه 21 تیر 1383, 08:49 صبح
یه روش استفاده از grouping است و تکراریها را در groupHeader بنویسید .

nasr
یک شنبه 21 تیر 1383, 10:45 صبح
میشه بیشتر توضیح بدید

vatal
یک شنبه 21 تیر 1383, 12:10 عصر
با سلام خدمت اساتید
به نضر من در این مشکل بخصوص میتونن از column header ,column footer استفاده کنن :wink:

moradi_am
یک شنبه 21 تیر 1383, 13:21 عصر
میشه بیشتر توضیح بدید
اولا باید DataSource شما بر اساس فیلد مورد نظر (پیچش و...) سورت یا ایندکس شده باشه
حال یک باند groupheader روی فرم قرار داده و فیلد condition را همان فیلد انتخاب کنید . و سپس اطلاعات تکراری خود را روی آن باند قرار دهید . در اینصورت هر آیتم فقط یکبار تکرار میشود .

به نضر من در این مشکل بخصوص میتونن از column header ,column footer استفاده کنن
با عرض معذرت : نه خیر در اینجا جواب نمیدهد .

nasr
یک شنبه 21 تیر 1383, 13:57 عصر
با سلام
اگه من یه GroupHeader در فرم بگذارم در موقع نمایش ، اون را در بالای هر کدوم نشون می ده در صورتی که من میخوام در کنار هر ردیف باشه

و همچنین اگه از GroupHeader استفاده کنم نمیشه اون رابه یه MasterData ربط داد و اون را در بالای همه اونها نشون میده

من می خواستم از کد نویسی استفاده کنم به این صورت که در OnBeforPrint خود صفحه هر Memo را Top ش را برابر با Top هر MasterData قرار دادم ولی هر بار یه جایی می گذاشت

memo60.top := (masterdata2.top);
memo4.top := (masterdata3.top);
memo31.top := (masterdata4.top);
memo31.top := (masterdata4.top);
memo43.top := (masterdata5.top);
memo49.top := (masterdata6.top);
memo55.top := (masterdata7.top);
memo61.top := (masterdata8.top);
memo67.top := (masterdata9.top);
این هم نمایی از حالت Design ریپورت

ممنون

nasr
یک شنبه 21 تیر 1383, 14:00 عصر
ببخشید این هم عکس حالت Design

http://www.sgpco.com/vahid/02.GIF

moradi_am
دوشنبه 22 تیر 1383, 07:28 صبح
خوب حالا متوجه مشکل شما شدم :
ببینید شما برای هر MasterData یک masterfooter اضافه کنید .حال در onbeforeprint این باندها و نیز باند MasterHeader این کد را بنویسید :
Pr:=True;
حالا در باندهای MasterData نیز یک متغیر مثلا بنام [x] قرار دهید و در محل Script این کد را اضافه کنید :

if Pr then
begin
x:='پیچش';
Pr:=False;
end
else x:='';

که در هر بخش فقط ردیف x:='' تغییر میکند . ضمنا باند masterfooter خالی است و عرض آنرا میتوانید کمترین حد ممکن قرار دهید .
جواب داده است . موفق باشید .

nasr
دوشنبه 22 تیر 1383, 08:51 صبح
با تشکر
روش بالا یه کمی سخت بود

من به اینصورت عمل کردم که برای هر DataMaster یه DataHeader گذاشتم و در OnBeforPrint آنها نوشتم

MasterHeader1.height := 0;

برای همه اینها همینکار را کردم و مشکل حل شد

باتشکر از جناب moradi_am :flower:

moradi_am
دوشنبه 22 تیر 1383, 13:04 عصر
خواهش میکنم .
ولی کاری که شما کردید اصلا ربطی به موضوع نداشت .من چیزی متوجه نشدم :متفکر: