# Native Code > برنامه نویسی در Delphi > ابزارهای گزارش سازی در دلفی > سوال: گزارش گیری گروهی

## farzadkamali

با سلام خدمت دوستان و اساتید دلفی
سه سوال درباره گزارش گیری گروهی داشتم.
هدف من ایجاد یک صورتحساب گروهی در برنامم هست (شارژ ساختمانی).
به  این صورت که کاربر با وارد کردن شماره واحد یک صورتحساب برای اون واحد  صادر میشه که این کار با جوین کردن جداول مختلف و... امکان پذیر شده و  مشکلی نداره.11.jpg
14.jpg

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

13.jpg

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

----------


## Mahmood_M

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

----------


## farzadkamali

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


با تشکر فراوان از پاسختون. مشکل حل شد.
فقط یه مشکلی به وجود میاد.
footer آخر همه و بعد از دو detail هست. مشکل اینجاست که اگر مقدادیر detail2 (detail که بالای footer قرار داره) خالی باشه footer رو نمایش نمیده.
جالب اینجاست که اگر footer رو بین دو detail قرار بدیم (یعنی زیر detail1) اونوقت اگر detail1 خالی باشه footer رو نمایش نمیده. 
به طور کلی اگر باندی که بالای footer قرار میگیره مقدار نداشته باشه دیگه footer نمایش داده نمیشه.
چرا این مشکل پیش میاد چه جوری باید این مشکل رو حل کرد؟
ممنون
img1.jpg

----------


## Mahmood_M

در حالت عادی، عنصر Footer اگر DataBand ش خالی باشه، چاپ نمیشه
می تونید توی رویداد OnAfterPrint مربوط به MasterData ، خالی بودن Detail ها رو چک کنید و Footer رو نمایش بدید، مثال :
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
 if DetailData1.Dataset.recordcount = 0 then
  Engine.Showband(Footer1);      
end;
می تونید شرط بالا رو برای هر دو Detail تغییر بدید
راه دیگه استفاده از رویداد OnManualBuild هستش که البته کار باهاش یه خورده دردسر داره

----------

