تکرار فیلدها در هر صفحه از گزارش در SQL Server Reporting Services

SQL Server 2008

SQL Server 2008

در Reporting Service چه 2005 و چه 2008 امکان تکرار فیلدها ( textbox یا هر آیتم دیگری ) در صفحات مختلف وجود ندارد و تنها عناصر موجود در Header و Footer گزارش تکرار می شوند و عملا چیزی به عنوان تکرار فیلد در هر صفحه وجود ندارد . برای مثال فرض کنید که شما اطلاعات یک شخص را می خواهید در یک صفحه بدون استفاده از یک جدول نمایش دهید ( مثلا برای صدور برگ خروج از شرکت یا هر چیز دیگری که اطلاعات آن جدولی نیست و برای هر شخص متفاوت با دیگری است ) برای این کار گزارشتان را با استفاده از textboxها در صفحه ایجاد می کنید و برای هر شخص یک پارامتر به گزارش پاس میکنید که این گزارش فقط اطلاعات آن شخص را نشان می دهد . تا اینجا مشکلی نیست ، حالا فرض کنید که شما با استفاده از همان یک پارامتر باید برای تمامی افراد سازمان یک برگ خروج یا یک گواهینامه صادر کنید . اینجاست که ایجاد گزارش یک صفحه ای امکان ندارد و از آنجا که شکل گزارش برای همه افراد ثابت است باید گزارش را به نحوی تغییر بدهید که یک ورودی بگیرد و در خروجی در هر صفحه بطور جداگانه اطلاعات هر شخص را نمایش بدهد .همانطور که گفتم در reporting services چیزی به اسم تکرار در هر صفحه وجود ندارد و عملا ایجاد یک چنین گزارشی امکان پذیر نیست . به نمونه های زیر که حالت های تکرار در ریپورتینگ سرویس هستند دقت کنید .

Header و Footer در جدول ها می تواند در هر صفحه تکرار بشود مشروط بر اینکه آیتم های خود آن جدول، از یک صفه بیشتر شود با اینکار می شود هدر و فوتر table را در هر صفحه نمایش داد . بنابراین اگر شما بخواهید از این حقه برای تکرار در هر صفحه استفاده کنید موفق نخواهید بود . برای مثال شما یک کلمه نام وبلاگ را می خواهید در هر صفحه تکرار کنید و از آنجا که هدر و فوتر یک جدول در هر صفحه تکرار می شود ، این کلمه را در هدر یا فوتر یک جدول می نویسید و ردیف های اضافی را پاک می کنید . با اینکار کلمه نام وبلاگ در اولین صفحه به درستی نشان داده خواهد شد ولی در صفحات بعدی چون آیتم های این جدول ( که متن شما در هدر آن قرار دارد ) از یک صفحه بیشتر نشده ( چون اصلا ردیفی وجود ندارد که آیتم ها زیاد بشود ) پس در نتیجه کلمه نام وبلاگ در صفحه بعدی تکرار نخواهد شد .

یک فیلد ( textbox ) ساده روی صفحه بگذارید و خصوصیت Toggle with Data Region را برابر با یک جدول بگذارید . در این صورت هم باز چیزی تکرار نخواهد شد . چون این خصوصیت در صورت بروز تکرار آن data region ( عموما لیست و جدول و ماتریس ) در صفحه جدید تکرار خواهد شد . این کار حتی اگر آیتم های جدول شما از یک صفحه هم بیشتر شود باز هم چیزی در صفحه بعد را برای شما تکرار نخواهد کرد ، چراکه لیست شما آیتم هایش زیاد شده و در چند صفحه آمده ؛ نه اینکه در صفحه بعد تکرار شده باشد .

روش دیگر آن است که از لیست استفاده کنید یعنی اینکه کلمه نام وبلاگ رادر یک لیست بنویسید . با این کار هم چیزی در صفحه بعد تکرار نمی شود چون این لیست اصلا به چیزی bind نشده و موارد موجود در آن اصلا قابل تکرار نیستند . حتی اگر page break را هم بعد از لیست بگذارید باز هم چیزی تکرار نخواهد شد .

بنابراین برای رفع این مشکل چه کار باید کرد ؟

همه فیلدهایی را که مایلید در هر صفحه تکرار شود را در List بی‌اندازید و یک گروه ایجاد کنید که این گروه بر اساس هر صفحه متفاوت باشد مثلا شماره دانشجویی یا شماره دستگاه یا یک آیتم منحصر بفرد قابل شمارش دیگر . و سپس بعد از لیست یک page break بگذارید. با این کار در صفحه اول همه چیز درست است و بعد از نمایش همه فیلدها ( که همه در لیست هستند ) یک break اتفاق می افتد با اینکار ریپورتینگ سروسی متوجه می شود که باید اطلاعات جدید را با توجه به مقدار موجود در group ایجاد شده در صفحه بعد نمایش بدهد . با اینکار تاوقتی که اطلاعات وجود داشته باشد ، یک صفحه ایجاد شده و در هر صفحه فقط اطلاعات مرتبط با آن گروه خاص ایجاد می شود . این راه حل هم در اس کیوال سرور ریپورتینگ سرویس ۲۰۰۵ و هم در ریپورتینگ سرویس ۲۰۰۸ کار می کند

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

2 Responses to تکرار فیلدها در هر صفحه از گزارش در SQL Server Reporting Services

  1. mona says:

    bazam salam
    nemidonam in post haro key javab vali man dar rabete ba har matlabi ke az shoma mikhonam vasam sharayete estefadash pish miad!!!!

    soalam ine ke mikham yek radif shamele jame kole column haye repoortam to tamame gozareshatam tekrar beshe , masale injas ke vaghti to list mizaram ham javab nemide chon mikham un field ha az datasete reorte aval fill beshe ama to har gozaresh faghat mishe az ye dataset ke unam male khode hamon reporte estefade kard

    man chakar konam!!?

  2. farshad ajami says:

    salam
    shoma mitoni as tavab sum , avg dar report service estefadeh koni ya hata on etlat ro ghabl as report services dar khod sql server sum koni

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: