ورود

View Full Version : سوال: گزارش گیری گروهی



farzadkamali
سه شنبه 30 آبان 1396, 23:24 عصر
با سلام خدمت دوستان و اساتید دلفی
سه سوال درباره گزارش گیری گروهی داشتم.
هدف من ایجاد یک صورتحساب گروهی در برنامم هست (شارژ ساختمانی).
به این صورت که کاربر با وارد کردن شماره واحد یک صورتحساب برای اون واحد صادر میشه که این کار با جوین کردن جداول مختلف و... امکان پذیر شده و مشکلی نداره.
147109
147114


مشکل من در گزارش گیری گروهی هست. به این صورت که یک بازه انتخاب بشه مثلا از واحد 100 تا 105 و گزارش گیری هر 5 واحد انتخاب شده پشت سر هم در یک گزارش آورده شود. مثل تصویر زیر که با فتوشاپ ساختم.


147111


متاسفانه هرچی گشتم و تلاش کردم به نتیجه ای نرسیدم. ممنون می شم راهنماییم کنید. در حال حاضر یه حلقه ساختم به تعداد واحد های انتخابی که با بستن گزارش واحد اول گزارش بعدی باز میشه و همینطور تا آخر که کار غیر معقول و وقت گیریه برای کاربر جهت پرینت گرفتن.
میخواستم گزارش واحد ها رو در یه جدول یا کوئری به صورت رکوردی ذخیره کنم که هر رکورد اطلاعات گزارش یک واحد باشه و از اون جدول یا کوئری گزارش بگیرم ولی بازم به شکل بالا در نمیاد.

Mahmood_M
شنبه 04 آذر 1396, 11:56 صبح
در اینجا جدول واحد ها میشه جدول Master و جداول هزینه ها میشن جداول Detail
باید یک MasterData داشته باشید برای نمایش اطلاعات واحد ها به عنوان جدول Master
قسمتهای سفید و زرد بالای صفحه رو هم باید در داخل MasterData قرار بدید
در زیر MasterData باید دو عدد DetailData قرار بدید برای نمایش جداول Detail
در زیر Detail ها، یک Footer قرار می دید و قسمتهای آبی و سفید پایین رو در داخل Footer میذارید

farzadkamali
سه شنبه 07 آذر 1396, 00:44 صبح
در اینجا جدول واحد ها میشه جدول Master و جداول هزینه ها میشن جداول Detail
باید یک MasterData داشته باشید برای نمایش اطلاعات واحد ها به عنوان جدول Master
قسمتهای سفید و زرد بالای صفحه رو هم باید در داخل MasterData قرار بدید
در زیر MasterData باید دو عدد DetailData قرار بدید برای نمایش جداول Detail
در زیر Detail ها، یک Footer قرار می دید و قسمتهای آبی و سفید پایین رو در داخل Footer میذارید
با تشکر فراوان از پاسختون. مشکل حل شد.
فقط یه مشکلی به وجود میاد.
footer آخر همه و بعد از دو detail هست. مشکل اینجاست که اگر مقدادیر detail2 (detail که بالای footer قرار داره) خالی باشه footer رو نمایش نمیده.
جالب اینجاست که اگر footer رو بین دو detail قرار بدیم (یعنی زیر detail1) اونوقت اگر detail1 خالی باشه footer رو نمایش نمیده.
به طور کلی اگر باندی که بالای footer قرار میگیره مقدار نداشته باشه دیگه footer نمایش داده نمیشه.
چرا این مشکل پیش میاد چه جوری باید این مشکل رو حل کرد؟
ممنون

147164

Mahmood_M
سه شنبه 07 آذر 1396, 14:17 عصر
در حالت عادی، عنصر Footer اگر DataBand ش خالی باشه، چاپ نمیشه
می تونید توی رویداد OnAfterPrint مربوط به MasterData ، خالی بودن Detail ها رو چک کنید و Footer رو نمایش بدید، مثال :

procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
if DetailData1.Dataset.recordcount = 0 then
Engine.Showband(Footer1);
end;
می تونید شرط بالا رو برای هر دو Detail تغییر بدید
راه دیگه استفاده از رویداد OnManualBuild هستش که البته کار باهاش یه خورده دردسر داره