View Full Version : تعداد سطرها در یک صفحه(فوری)
j_mehdi
شنبه 16 اردیبهشت 1385, 12:09 عصر
با عرض سلام وخسته نباشید خدمت خفنترین گزارشگیر ایران
ببین دوست عزیز من خیلی وقته که با کریستال ریپورت کار میکنم
اما توی این چند وقته با یه مشکل برخورد کردم که حل اون برایم معضل شده است و اون اینه که من میخوام تعداد سطرها را در هر صفحه خودم کنترل کنم به این صورت که مثلا در صفحه اول 10 سطر و در صفحه دوم 23 سطر و در صفحه سوم 16 سطر و.....ودر صفحه آخر نیز ادامه سطرها را نشان دهم
برای این کار باید چه کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟:مت کر: :متفکر: :متفکر:
ali_kolahdoozan
شنبه 16 اردیبهشت 1385, 13:20 عصر
دیتابیست رو محدود کن و در هر صفحه از محدودیت جدید استفاده کنید
Seivan
دوشنبه 18 اردیبهشت 1385, 11:02 صبح
شما در هر صفحه می توانید تعداد رکوردهای چاپ شده را بدست آورید. (این راه حلو برای یکی دیگر از دوستامون توضیح دادم.)
سپس در Section فعلی و با توجه به شماره صفحه فعلی و تعداد رکوردهای چاپ شده در Section مورد نظر شرایطان را برای فعال و غیر فعال شدن خاصیت New Page Before برای Section مورد نظر اعمال نمایید.
اگر نتونسین این کار رو انجام بدید برایم ایمیل بفرستید:
Seivan.rahmani@gmail.com
j_mehdi
سه شنبه 19 اردیبهشت 1385, 10:34 صبح
ببینید دوستان من مشکل اصلیم اینه که میخوام حتما report footer را حتما در انتهای صفحه یا در وسط صفحه چاپ کنم یعنی اینکه اگر تعداد سطرها طوری بود که report footer قرار بود در اول صفحه بعد چاپ بشود این کار را نکند بلکه از تعداد سطر های صفحه قبل کم کند و حداقل یک رکورد در صفحه بعد بزند و سپس report footer را چاپ کند.
میدانید report footer من امضا مدیر یک سازمان و "جمع کل" و "جمع این صفحه " هستش و وقتی که این اتفاق می افتد همه سطر ها را می زند و سپس در صفحه بعد فقط جمع کل را میزند
و در کنار آن جمع این صفحه را صفر می زند و در ابتدا صفحه امضاء مدیر را چاپ می کند که این بسیار بد است امیدوارم مسأله را به خوبی شکافته باشم
قبلا از همکاریتان متشکرم:متفکر: :متفکر: :متفکر: :متفکر: :متفکر:
Seivan
سه شنبه 19 اردیبهشت 1385, 15:34 عصر
در این حالت راه حل خیلی پیچیده تر می گردد.
من 2 راه حل برای شما دارم. اما در هر دو راه حل از تعداد رکورد چاپ شده در صفحه جاری استفاده می گردد. پیشنهاد دارم اول تعداد رکورد در صفحه را که برای آقا یا خانم Nemati توضیح دادم خوب مطالعه بفرمایید. تا بعدا در فرصتی 2 راه حل دیگر را تشریح کنم.
ولی بنده به اطلاعاتی بیشتری نیز برای دقت محاسبات نیاز دارم.
مثلا اینکه آیا فیلدی وجود دارد که خاصیت چند خطی شدن آن فعال است یا خیر. (منظورم اینه که آیا عرض همه سطرها یکسان و Fix می باشد؟)- واینکه اندازه Report Footer نیز ثابت است؟
Seivan
سه شنبه 19 اردیبهشت 1385, 22:17 عصر
متاسفانه Crystal Report همچنین امکاناتی را به صورت آماده ندارد. و این برنامه نویس است که باید با هوش و ذکاوت خود این مسائل را حل نماید. من حالت ساده راه حل را به صورت زیر تشریح می کنم. که اگر حالات مشکل نیز در نظرم است ولی به دلیل پیچیده نشدن فعلا صرف نظر خواهم کرد. (مثلا اگر خاصیت چند خطی بودن فیلدها فعال باشد).
ابتدا فرمولی ایجاد می کنیم که تعداد رکوردهای چاپ شده در صفحه جاری را می دهد.
سپس عملیات زیر را دنبال می کنیم:
حد ماکزیمم تعداد رکوردها در صفحه آخر را MaxRowCount فرض می کنیم. ( البته شما می توانید برای گزارش مربوطه و با توجه به اندازه ثابت ReportFooter این عدد را اندازه بگیرید. )
توجه باید داشت که در صفحه ای که قرار است report Footer در آن قرار بگیرد باید یک حد بالایی برای تعداد رکوردهای قابل چاپ در آن صفحه در نظر بگیریرد که اگر تعداد رکوردهای آن صفحه از حد بالا بیشتر گردید باید قبل از چاپ رکورد جدید صفحه ای جدید ایجاد نمایید و سپس رکورد را چاپ کند.(البته به شرط اینکه رکوردی باقی مانده باشد که نشان داده نشده باشد)
// save this formula as PageRowCount
global numberVar p ;
global numberVar pageRowNumber ;
if p<> pageNumber
(
p := pageNumber ;
pageRowNumber := 1
)
else
pageRowNumber := pageRowNumber +1
روی section Detail کلیک راست کنید و Section Expert را بزنید و برای خاصیت مربوط به "New Page Before" فرمول زیر را بنویسید:
(Count ("field1") - RecordNumber < 2) AND ({@PageRowCount > MaxRowCount })
field1 می تواند هر یک از فیلدهای موجود در DataSource گزارش باشد.
ali2000_1358
یک شنبه 09 تیر 1387, 12:00 عصر
ابتدا فرمولی ایجاد می کنیم که تعداد رکوردهای چاپ شده در صفحه جاری را می دهد.
دوست عزیز این کار رو چطور می شه انجام داد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.