# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ابزارهای گزارش سازی >  گزارشات چند صفحه ای

## shima2006

سلام دوستان
همونطور که شما دوستان هم حتما دیدید بالای صفحات گزارش کریستال ریپورت دو تا علامت برای رفتن به صفحه قبلی و بعدی وجود داره ، من یک گزارش دارم که چندین رکورد رو برمی گردونه ولی من تو کریستال ریپورت فقط می تونم اولین رکورد رو ببینم و قسمتی که مربوط به رفتن صفحه بعدی و قبلی میشه غیر فعاله ....
چطور می تونم این دکمه ها رو فعال کنم و بقیه صفحات گزارش رو ببینم؟

----------


## mn_zandy63

دو حالت داره، ممکنه فیلدهات رو داخل header یا footer یا هرجای دیگه ای به جز قسمت Details گذاشته باشی.
یا اینکه اصلا query ت فقط یک رکورد برگردونه  :چشمک: 

این دکمه ها که میگی اگه گزارشت چند تا صفحه داشته باشه خودش فعال میشه.

موفق باشی

----------


## shima2006

متشکرم 
حالت اول صادقه و به همین خاطر ظاهرا باید از روشی غیر از کریستال ریپورت استفاده کنم

----------


## mn_zandy63

خب چرا روش دیگه؟
فیلد هات رو بذار داخل قسمت Detail.
 :متفکر:

----------


## shima2006

نمی تونم از Detail استفاده کنم چون من یک فرم دارم فرض کن یک کارنامه 
از اون جایی که کارنامه فرمت مشخصی داره پس نمیشه تویه Detail گذاشتش
چون کاربر باید در هر لحظه یک کارنامه رو ببینه ، دکمه صفحه بعدی رو بزنه و کارنامه بعدی رو ببینه

----------


## shima2006

به نظرم تنها راهش این باشه که فرم رو  در C#‎ طراحی کنم و  کاربر با زدن دکمه بعدی ، اطلاعات رکور بعدی رو ببینه...

----------


## mn_zandy63

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

اطلاعاتت رو در قسمت Details بذار و بعد

Report -> Section Expert -> Details -> Paging -> New page after -> [1] Visible recordsرو تیک بزن.

موفق باشی

----------


## shima2006

یه چیز جالب کشف کردم
وقتی ارتباط با یک جدول برقرار می کنم دکمه های مربوط به صفحه بعدی و صفحه قبلی فعال میشه ولی وقتی ارتباط کریستال ریپورت رو با Store Procedure برقرار می کنم این دکمه ها غیرفعال می شوند :متفکر:

----------


## mn_zandy63

منظورت از ارتباط چیه؟

----------


## shima2006

در قسمت Database Fields اگه ارتباط با یک table برقرار شه .......
منظورم از ارتباط اینه :گیج:

----------


## mn_zandy63

> در قسمت Database Fields اگه ارتباط با یک table برقرار شه .......
> منظورم از ارتباط اینه


خب بستگی داره چیکار کرده باشی، نمیشه حدس زد.  :متفکر: 
شاید Stored procedure ت فقط یه دونه خروجی داره، یا هر دلیل دیگه ای که الان به ذهنم نمیرسه.

اگه گیر کردی، گزارش + دیتابیست رو بذار اینجا یه نیگاه بهش بندازیم.
موفق باشی.

----------


## shima2006

> اگه فقط مشکلت اینه که هر رکورد داخل یک صفحه جداگانه نشون داده بشه، میتونی به کریستال بگی که هر رکورد رو توی یک صفحه نشون بده.
> 
> اطلاعاتت رو در قسمت Details بذار و بعد
> 
> 
> Report -> Section Expert -> Details -> Paging -> New page after -> [1] Visible recordsرو تیک بزن.


من در Visual studio 2008 کار میکنم و  New page after رو پیدا کردم و براش تیک زدم 
از طرفی Stored procedure رو اجرا کردم و مطمئنم که بیش از یک رکورد برمی گردونه
ولی متاسفانه اون مثلثهایه کوچولویه مربوط به صفحه بعدی و قبلی فعال نشدن :خیلی عصبانی: 
راستی من  [1] Visible records رو در آدرسی که دادید ندیدم !
به نظرتون چرا فعال نمیشن؟؟؟

----------


## mn_zandy63

سلام دوست عزیز
خب قسمت New Page After رو که پیدا کردید؟ داخل اون چه قسمت هایی داشتید؟
به یک نکته دقت کنید حتما باید قسمت Details انتخاب باشه تا Visible Records قابل دیدن باشه. (اگه Details شما به چند Detail تقسیم شده دقت کنید که حتما خود Details انتخاب شده باشه).


مثلث های مربوط به صفحه بعد و قبل فقط فقط به این بستگی داره که گزارش شما چند صفحه داشته باشه یا خیر.
اگه وجود ندارند معنیش اینه که به هر دلیل گزارش شما فقط یک صفحه داره.
حالا این میتونه مثلا به این دلیل باشه که شما فیلد هاتون رو به جای Details در Header ها گذاشته باشید یا اونها رو فیلتر کرده باشید و یا هر دلیل دیگه ای که در این لحظه به ذهن من نمیرسه.

اگه نتونستید پیدا کنید، کد و فایل گزارشتون رو بذارید اینجا تا یک نیگاه بهش بندازیم.

موفق باشید

----------


## shima2006

متشکرم mn_zandy63 ، مثل همیشه کمکت به دادم رسید

----------


## mn_zandy63

خواهش میکنم.

Happy Coding...  :چشمک:

----------


## shima2006

mn_zandy63  یک مشکل کوچولو!
وقتی گزارشی آماده میشه فرض کنید ده تا رکورد برمی گرده
تویه کریستال ریپورت اول دهمین رکورد رو نشون میده و  مثلث کوچولویه مربوط به صفحه قبلی فعال میشه 
ولی من میخوام اول ، اولین رکورد رو نشون بده و  مثلث مربوط به صفحه بعدی فعال بشه....
یعنی کاربر به جایه اینکه عقبکی بره ، یکی یکی بره جلو :متفکر:

----------


## mn_zandy63

سلام دوست عزیز.
مطمئنی؟؟ تا اونجا که اطلاعات من اجازه میده، تا خودت داخل کد به Crystal Report Viewer نگی آقا جون برو فلان صفحه، خودش صفحه اولِ به طور پیشفرض.

یه چک کن.  :متفکر: 
موفق باشی

----------


## shima2006

آخه منظورتون از چک کردن چیه؟
من برنامه رو اجرا میگیرم ، می بینم فقط می تونم برم به صفحه قبلی...
و این در حالی است که اگر Stored Procedure مربوطه رو اجرا بگیرم به ترتیب رکوردها رو از اول به آخر میاره!!!

----------


## mn_zandy63

سلام دوست عزیز
منظورم از چک کردن این بود که ببین به Crystal Report Viewer نگفتی برو فلان صفحه؟

به ذهنم موردی نمیرسه که اتوماتیک این اتفاق بیافته، اگه بتونی برنامه ت رو بزاری شاید بتونم کمک کنم  :لبخند:

----------


## mn_zandy63

اگه راهی پیدا نکردی، اینو امتحان کن
در آخرین خط روالی که گزارش رو load کردی، تابع GotoFirstPage رو از CrystalReportViewr اجرا کن.
ببین درست میشه یا نه، اگه نشد، احتمالا موضوع چیز دیگه ایه و احتمالا من اشتباه متوجه مشکلت شدم.  :چشمک: 

موفق باشی

----------


## shima2006

mn_zandy63 عزیز این تابع GotoFirstPage رو از کجا پیداش کنم؟

----------


## mn_zandy63

سلام دوست عزیز همون CrystalReport Viewer که توی صفحه گذاشتی و فایل گزارشت  رو دادی نمایش بده، این تابع رو داره.

----------


## ahrimaneahurai

سلام رفیق.از group استفاده کن . مثلا بر اساس شماره دانش آموز.بر اساس کلیدت.مشکلت حل میشه.

----------

