PDA

View Full Version : سوال: دسترسی به یک Field در قسمت Footer یک گزارش در CrystalReport ؟



mdssoft
جمعه 27 شهریور 1388, 23:30 عصر
با سلام.
من در کریستال ریپورت یه گزارش به صورت عکسی که قرار دادم درست کردم . (http://barnamenevis.org/forum/attachment.php?attachmentid=37136&d=1253299950)
حالا می خوام تو فیلد UnboundString1 مجموع قیمت رو قرار بدم ، من این مجموع قیمت ها رو تو C#‎‎‎‎ به دست آوردم اما نمیدونم چطور به UnboundString1 نسبتش بدم.
میشه منو راهنمایی کنید ؟

zoofa
جمعه 27 شهریور 1388, 23:54 عصر
سلام دوست عزيز
براي جمع كردن يك فيلد لازم نيست اون كار رو يكني
مي تونيد از field explorer-> running total fields راست كليك كرده و يك new بسازيد و از سمت چپ فيلدي كه مي خواهيد جمع كنيد رو انتخاب و بر روي > كليك كنيد و در قسمت type of summary گزينه sum رو انتخاب كنيد.

mdssoft
شنبه 28 شهریور 1388, 00:05 صبح
ممنون ، اما من میخواستم از این روش استفاده کنم . چون همه فیلدهام تو قسمت Details از نوع String هستند ( برای نمایش اعداد به فارسی ) . من sum رو که گذاشتم فقط جمع تعداد ردیف ها رو بر میگردنه !!! نه جمع مقادیر داخل اونا رو ، فکر کنم چون فیلدهام از نوع String هستند اینطوریه !
غیر از اینا من خیلی دنبال این هستم که بفهمم چطور می تونم به یک Field تو Header یا Footer یک گزارش از تو C#‎‎ دسترسی داشته باشم و بتونم Value آنها رو تغییر بدم ، خیلی به دردم میخوره.
ممنون

zoofa
شنبه 28 شهریور 1388, 00:20 صبح
براي اون كار
در پنجره field explorer -> parameter fields يك new ايجاد كنيد و براي اون يك نام انتخاب كنيد و مدل اون رو هم انتخاب كنيد. مثلاً نام prm
بعد وقتي كه مي خواهيد گزارش رو بداخل reportdocument بريزيد اينطوري مقدار دهيش كنيد:



reportdocument.SetParameterValue("prm", "myvalue")

mdssoft
شنبه 28 شهریور 1388, 00:41 صبح
ممنون از پاسختون ، اما چون تو کریستال ریپورت تازه کارم چیزه زیادی متوجه نشدم.
من تونستم فیلدی همون طوری که گفته بودید اضافه کنم به نام TotalPrice1 ، این هم کدم هست :


CrystalReport.DataSet_فاکتور ds1 = new RezaRestaurant.CrystalReport.DataSet_فاکتور( );
foreach (ListViewItem item in listView_فاکتور.Items)
ds1.DataTable_فاکتور.Rows.Add(item.SubItems[0].Text, item.SubItems[1].Text, item.SubItems[2].Text, item.SubItems[3].Text, item.SubItems[4].Text);

CrystalReport.CrystalReport_فاکتور cr1 = new RezaRestaurant.CrystalReport.CrystalReport_فاک ور();
cr1.SetDataSource(ds1);


cr1.SetParameterValue("TotalPrice1", "تست"); //ٍException
cr1.PrintToPrinter(1, false, 0, 0);اما رو خطی که علامت گذاشتم Exception میده ، میشه بیشتر راهنمایی کنید ؟
ممنون از شما گرامی

zoofa
شنبه 28 شهریور 1388, 00:52 صبح
1- تو كريستال هم ساختيد؟

2- خط


cr1.SetParameterValue("TotalPrice1", "تست"); //ٍException



رو به بالاي خط


cr1.SetDataSource(ds1);


ببريد ببينيد حل ميشه؟

mdssoft
شنبه 28 شهریور 1388, 01:13 صبح
دوست خوبم ممنون مشکلم حل شد.
دمت گرم ، اما مشکل بالا یا پایین بودن این کد نبود :

cr1.SetParameterValue("TotalPrice1", "تست"); //ٍException

من فکر کردم منظور از نام پارامتر اونیه که وقتی روش کلیلک می کنی تو قسمت Properties نمایش میده ، که برا من TotalPrice1 رو نشون میداد ، اما وقتی فیلد رو میسازیم نام رو تعریف میکنیم و با این چیزی که تو Properties نشون میده فرق داره !
من اسم فیلد رو TotalPrice گذاشته بودم . با بررسی این تاپیک (http://www.barnamenevis.org/forum/showthread.php?t=176541) مشکل رو فهمیدم .
یعنی کد بالا رو به کد زیر تغییر دادم و مشکل حل شد :

cr1.SetParameterValue("TotalPrice", "تست");

روزای آخر ماه مبارک رمضانه ، انشا ا... که همون طور که به دیگران کمک می کنی ، خدا هم برات خیر بخواد.
ممنون ازت