ورود

View Full Version : شماره دلخواه برای page number



amir zahed
چهارشنبه 29 اردیبهشت 1389, 18:23 عصر
سلام دوستان
چطوری میتونم تو گزارشات شماره صفحه رو خودم انتخاب کنم.منظورم اینه خود کریستال ریپورت یه فرمول داره به نام page number که از شماره 1 شروع میکنه شماره صفحات رو میندازه.حالا چطوری من تو یه تکس باکس مثلا بهش بگم بجای 1 از 20 شروع کن یکی یکی برو جلو.مثلا اگه گزارش من سه صفحه باشه شماره صفحه رو اگه تو تکس باکس دادم 20 صفحه بعدی رو 21 و بعدی رو 22 برام بزنه؟
ممنون

mn_zandy63
پنج شنبه 30 اردیبهشت 1389, 15:13 عصر
سلام دوست من،
شما میتونی یک پارامتر داشته باشی که از بیرون مقدار شروع صفحات رو بفرستی،
و موقع نمایش شماره صفحه هم، از یک فرمول استفاده کن و اون مقدار شروع صفحات مثلا 20 رو با همون Page Number جمع کن.
موفق باشی

amir zahed
پنج شنبه 30 اردیبهشت 1389, 18:48 عصر
سلام دوست عزیز
این کاری که فرمودید من قبلا انجام دادم. یعنی از طریق یه تکس باکس مقدار صفحه رو ارسال میکنم.اما اینکه چطوری page number از اون شماره ای که تو تکس باکس وارد کردم شروع بشه و جلو بره رو نتونستم کاری کنم. اگه میشه کدشو برام بذار
ممنون

amir zahed
شنبه 01 خرداد 1389, 19:50 عصر
کسی نیست کمک کنه

mn_zandy63
شنبه 01 خرداد 1389, 23:52 عصر
سلام دوست من،
خب همونطور که گفتم، اگه فرض کنیم مقدار شروع رو در InitialPageNumber داشته باشی، کافیه یک Formula Field اضافه کنی و مقدار اون رو برابر با حاصل جمع InitialPageNumber و متغیر شماره صفحه داحل خود کریستال منهای 1 بذاری. همین
حالا اگه این Formula Field رو داخل صفحه ات بذاری شماره صفحه رو از InitialPageNumber شروع میکنه.
متاسفانه کریستال جلوم نیست که بتونم کد بنویسم.

اگه جاییش نامفهوم بود بگو تا بیشتر توضیح بدم.

موفق باشی

amir zahed
دوشنبه 03 خرداد 1389, 10:41 صبح
سلام
نتونستم انجام بدم.اگه لطف کنی کد بهم بدی ممنون میشم

mn_zandy63
دوشنبه 03 خرداد 1389, 23:33 عصر
متاسفانه الان امکانش رو ندارم،
فایل گزارشت رو بذار اینجا، تغییرش میدم برات میذارم.
موفق باشی

mn_zandy63
چهارشنبه 05 خرداد 1389, 14:24 عصر
سلام دوست من
ممنون از لطفت
فایل رو برات فرستادم
تو تکس باکس شماره جدولم رو وارد میکنم. مثلا 20. میخوام صفحات بعدی 21 و الی آخر بره
یه سوال دیگه
این سوال رو خود شما بهم جواب دادید که خیلی بدردم خورد. در مورد اینکه چطور تو یه صفحه 32 خونه بندازه و تو صفحه بعد باز از شماره یک شروع کنه
حالا میخوام اگه کمتر شد اون page fotter بره و به ته آخرین رکوردم بچسبه.الان و قتی تو یه صفحه مثلا 10 تا رکورد باشه جمع اون رو ته صفحه برام میندازه
ممنون میشم این 2 تا سوال رو جواب بدی

سلام دوست من،
خواهش میکنم،
اینطور که من متوجه شدم، شما از یک فرمول به نام num استفاده کردید که داخل کدتون مقدار دهی میکنید.
در اینصورت، شما کافیست یک فرمول دیگه به گزارشتون اضافه کنید و مثلا اسمش رو بذارید pageNo و کد داخلش رو بنویسید PageNumber + pageNo - 1
حالا هر جا که این فرمول را داخل گزارش بگذارید شماره صفحه شما رو از همون شماره ای که خواسته بودید شروع میکنه.
در مورد سوال دومت،
شما از چه ورژن کریستال استفاده میکنید؟
در ورژن 2008 کریستال گزینه ای در قسمت Section Expert وجود داره برای اینکه PageFooter بیاد و به آخرین رکورد بچسبه، که در حال حاضر توی ذهنم نیست، اما از اونجایی که داری از VB6 استفاده میکنی، احتمالا کریستالت ورژن پایین تری هست، اگه اینطوره راهی که به ذهنم میرسه رو بهت میگم،
در حالت عادی در کریستال ریپورت، Page Footer همیشه در آخر صفحه نمایش داده میشه و Report Footer فقط در صفحه آخر و زیر آخرین رکورد. (این همون چیزیه که میخوای)
پس همه مواردی که میخوای داخل Page Footer نمایش بدی اما در صفحه آخر بیاد و زیر آخرین رکورد نمایش داده بشه رو داخل Report Footer هم بذار. اما این یه ایراد داره، در صفحه آخر، این فیلد ها هم در Report Footer نمایش داده میشه هم در Page Footer.
برای رفع این مشکل در صفحات آخر اونها رو در Page Footer مخفیشون میکنیم.
اینکار رو احتمالا بلدی، برای نمونه فرض کنیم میخوای اون فرمول که ساختیم رو در صفحه آخر مخفیش کنی که نمایش داده نشه، برای اینکار، (من بر اساس ورژن 2008 توضیح میدم، احتمالا برای تو هم باید جایی شبیه به این باشه)، روی اون فرمول یا فیلد یا هرچیز دیگه که هست، کلیک راست کن و Format رو انتخاب کن تا Format Editor باز شه، در زبانه Common گزینه Suppress رو اگه کلیک کنی، فیلدت مخفی میشه، اما ما نمی خوایم همیشه مخفی باشه میخوایم برای مخفی شدنش شرط بذاریم، برای همین روی کلید x-2 که جلوش هست کلیک کن.
حالا باید بگیم در چه شرایطی مخفی باشه، مثلا میخوایم در صورتی که صفحه آخر بودیم نمایش داده نشه، پس شرط رو مینویسیم PageNumber = TotalPageCount اگه خواستی عکسش باشه مینویسی PageNumber <> TotalPageCount. از این روش استفاده کن برای اینکه در همه صفحه ها به جز صفحه آخر همه فیلد ها در Page Footer نمایش داده شه و در صفحه آخر نشه.

موفق باشی

amir zahed
چهارشنبه 05 خرداد 1389, 19:32 عصر
سلام
جواب قسمت دوم سوالم رو گرفتم. ممنون
من از کریستال ریپورت 8 استفاده میکنم. در مورد سوال اولم همون طور که شما گفتید تو قسمت گزارشم یه فرمول دیگه اضافه کردم به نام همون pageno واونو تو قسمت page header قرار دادم و در قسمت edit اون همون فرمولی که شما گفتید نوشتم.
Page number + pageno-1
اما فرمول رو قبول نمیکنهerror میده.مشکلش چیه؟
موفق باشی

mn_zandy63
پنج شنبه 06 خرداد 1389, 00:54 صبح
سلام دوست من،
عکسهایی که گذاشتی ایرادی داخلشون مشاهده نمیشه،
فقط میمونه یه مورد، احتمالا داخل اون فرمولت که اسمش pageno هست و عکسش رو نذاشتی ایرادی هست،
داخلش چی نوشتی؟ حدس میزنم به جای عدد داخلش یه رشته نوشتی. اگه مثلا نوشتی "32" بنویس 32.

موفق باشی.

amir zahed
جمعه 07 خرداد 1389, 11:01 صبح
سلام دوست عزیز
اینم اون فرمولی که تو فرم گذاشتم و به گزارش ارسال میکنم

rep_al.FormulaFields.GetItemByName("num").Text = "'" & Text1.Text & "'"
rep_al.FormulaFields.GetItemByName("pageno").Text = "'" & Text1.Text & "'"

اگه ممکنه میشه یه نمونه ساده برام اینجا بذاری ؟ ممنون

amir zahed
دوشنبه 10 خرداد 1389, 18:38 عصر
سلام
دوست عزیز اگه لطف کنی جواب بدی خیلی ممنون میشم
موفق باشی

mn_zandy63
جمعه 14 خرداد 1389, 14:51 عصر
سلام دوست من،
وقتی که شما اینجا چیزی مینویسی به من پیغام نمیده، بنابراین متوجه نمیشم،

ببین دوست من، شما موقعی که فرمول رو در گزارشت تعریف کردی داخلش چی نوشتی؟
یه مقدار داخلش نوشتی بالاخره! اون چیه؟
یک رشته است؟ یا عدده؟

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

مقادیری هم که اینجا در کدت داری میفرستی رشته اند،
به این شکل بنویس:

rep_al.FormulaFields.GetItemByName("num").Text = Text1.Text
rep_al.FormulaFields.GetItemByName("pageno").Text = Text1.Text

موفق باشی.