PDA

View Full Version : جمع فیلد از جنس رشته در کریستال ریپورت



slashslash2009
پنج شنبه 24 بهمن 1387, 16:32 عصر
سلام
همونطور که همتون میدونید میشه در کریستال ریپورت با ساخت یک rtotal برای جمع کردن تمام رکوردها ولی فقط روی یک فیلید از جنس عدد استفاده کرد ولی من میخوام این کارو روی فیلیدی به کار ببرم که از جنس استرینگ(char) هست ولی همشون عدد وارد شدن یعنی رشته ای که عدد هستش .چی کار کنم ؟
به جای اینکه جمعشون کنه تعداد رکوردا رو می نویسه

slashslash2009
پنج شنبه 24 بهمن 1387, 19:58 عصر
ببخشید یه سواله دیگه هم داشتم مربوط به ازسال پارامتر هستش .یه پارامتر فیلد درست کردم به اسم a1 ولی موقعی که تو برنامم بهش پارامتر ارسال می کنم و می خواد فرم گزارشو نشون بده یه فرمی باز میشه که میگه به صورت دستی پارامترو بهم بده یه چیزی هم بالاش نوشته به این مضمون :
you can provide a single value for this parameter
enter the value want to include


DataTable dt = new DataTable();
connect consql = new connect();
dt = consql.MySelect("select * from input");
CrystalReport1 rptresult = new CrystalReport1();
rptresult.SetParameterValue("a1", textBox3.Text);
rptresult.SetDataSource(dt);
gozaresh frm=new gozaresh();
frm.crystalReportViewer1.ReportSource = rptresult;
frm.crystalReportViewer1.Refresh();
frm.ShowDialog();

slashslash2009
جمعه 25 بهمن 1387, 09:59 صبح
سوال دومم رو حل کردم فقط باید جای این دو رو عوض کرد


rptresult.SetParameterValue("a1", textBox3.Text);
rptresult.SetDataSource(dt);

unique1984
جمعه 25 بهمن 1387, 12:45 عصر
سلام
همونطور که همتون میدونید میشه در کریستال ریپورت با ساخت یک rtotal برای جمع کردن تمام رکوردها ولی فقط روی یک فیلید از جنس عدد استفاده کرد ولی من میخوام این کارو روی فیلیدی به کار ببرم که از جنس استرینگ(char) هست ولی همشون عدد وارد شدن یعنی رشته ای که عدد هستش .چی کار کنم ؟
به جای اینکه جمعشون کنه تعداد رکوردا رو می نویسه

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

فرض میکنیم اسم جدول شما Tbl1 و اسم اون فیلد رشته ای FStr هستش.
برای این کار نیاز به سه تا فرمول دارین که در قسمت Formula Fields اونها رو ایجاد می کنین.
در فرمول اول (a) اینا رو مینویسین:

Global numberVar total;
WhilePrintingRecords;
total:=0;
در فرمول دوم (b):

Global numberVar total;
WhilePrintingRecords;
total:=total+ToNumber({Tbl1.FStr});
در فرمول سوم (C) :

Global numberVar total;
WhilePrintingRecords;
total;
خب کار با فرمولها تموم شد. حالا نوبت جایگذاری اونها در گزارشتونه.
فرمول a رو در ReportHeader ، فرمول b رو در Details و فرمول C رو در ReportFooter قرار میدین.
چون قراره فقط جمع کل یا همون نتیجه برگردونده شده توسط فرمول c رو ببینین، باید a, b رو مخفی کنین . روی اونها کلیک راست کرده و گزینه Format Object رو انتخاب کنین و از تب Common گزینه Suppress رو در حالت انتخاب قرار بدین.
البته ببخشید ، چون نمیدونستم در این زمینه چقدر اطلاعات دارین ، کامل توضیح دادم.
موفق باشین.