PDA

View Full Version : تغییر عنوان گزارش ها در Crystal report



Abbas Naghdi
پنج شنبه 03 بهمن 1392, 10:42 صبح
سلام بچه ها ..
چنتا گزارش دارم در Cristal report حالا میخوام عنوان همه ی این گزارش ها رو بر اساس یه متغیر تغییر بدم ...
به نظر شما چیکار کنم ؟

programmernet
پنج شنبه 03 بهمن 1392, 18:49 عصر
باید از ارسال پارامتر استفاده کنی .

samsam_ninja
پنج شنبه 03 بهمن 1392, 20:23 عصر
همون طوری که کریستال ریپورت دیتا هاش رو از پایگاه داده می خونه ، شما میتونی این عنوان رو در پایگاه داده ذخیره کنی و تو هدر ریپورتت استفاده کنی!

Abbas Naghdi
جمعه 04 بهمن 1392, 10:39 صبح
با تشکر ... داخل پایگاه داده که نباید ذخیره کنم ...
با استفاده از پپارامتر چطوری هست ؟

ma.rad
جمعه 04 بهمن 1392, 11:06 صبح
تو فرم کریستال یه پارامتر از نوع string تعریف کن
اینطوری مقدار بهش پاس میدید:
rd.SetParameterValue("Title", Title);

امیر مهرشاد
جمعه 04 بهمن 1392, 12:20 عصر
معمولا برای گزارش های کاستم و شرایطی بهتره اون گزارش هایی رو که احتمال میدید یوزر در آینده به آنها احتیاج پیدا بکنه رو در برنامتون در نظر بگیرید میتونید با استفاده از سوئیچ حالتهای مختلف گزارش خودتونو دسته بندی کنید و اینطوری آزادی عمل بیشتری به یوزرتون میدید و معمولا کاربرها در اینگونه موارد متوجه نخواهند شد که با یک گزارش تک انتخابی روبرو هستند

Abbas Naghdi
شنبه 05 بهمن 1392, 07:34 صبح
معمولا برای گزارش های کاستم و شرایطی بهتره اون گزارش هایی رو که احتمال میدید یوزر در آینده به آنها احتیاج پیدا بکنه رو در برنامتون در نظر بگیرید میتونید با استفاده از سوئیچ حالتهای مختلف گزارش خودتونو دسته بندی کنید و اینطوری آزادی عمل بیشتری به یوزرتون میدید و معمولا کاربرها در اینگونه موارد متوجه نخواهند شد که با یک گزارش تک انتخابی روبرو هستند

با تشکر دوست عزیز اما چطوری ؟

Abbas Naghdi
شنبه 05 بهمن 1392, 11:20 صبح
تو فرم کریستال یه پارامتر از نوع string تعریف کن
اینطوری مقدار بهش پاس میدید:
rd.SetParameterValue("Title", Title);

میشه یه مثال کامل تر توزیح بدید ...

امیر مهرشاد
شنبه 05 بهمن 1392, 17:19 عصر
من اینجا یک مثال کوچیک میزنم شما بسته به گزارشتون توسعش بدید البته آموزش پاس دادن پارامتر هم داخلش میگم

من اینجا از 4 حالت ساده برای گزارش استفاده میکنم شما میتونید بسته به اقتضای پروژه تا n شرایط بهش بدید

خب میریم برای شزوع کار فرض بر مثال ما میخاییم برای یه جایی وضعیت درآمد و هزینشونو گزارش بدیم

مثلا

115905



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




string NoeGozaresh = labelX1.Text;
switch (NoeGozaresh )
{
case "کل درآمد ها":
labelX1.Text = "کل درآمد ها";

ReportDocument rd = new ReportDocument();
rd.FileName = "KolDaramad.rpt";
con.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT Tarikh, SharhDaramad, Mablagh FROM TblDaramadha", con);
DataTable dt = new DataTable();
da.Fill(dt);
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
//در پارامتر فیلد یک نیو درست کن بعد هر چیرو پاس کن تمام
string D1 = dateBox1.TextDate.ToString();
string D2 = txtTarikhName.TextDate.ToString();
rd.SetParameterValue("T1", D1);
rd.SetParameterValue("T2", D2);
crystalReportViewer1.Show();

break;




case "کل درآمد ها بر اساس تاریخ های انتخابی":
labelX1.Text = "کل درآمد ها بر اساس تاریخ های انتخابی";

string D1 = dateBox1.TextDate.ToString();
string D2 = txtTarikhName.TextDate.ToString();
ReportDocument rd = new ReportDocument();
rd.FileName = "KolDaramad.rpt";
con.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT Tarikh, SharhDaramad, Mablagh FROM TblDaramadha WHERE Tarikh BETWEEN '"+D1+"' AND '"+D2+"'", con);
DataTable dt = new DataTable();
da.Fill(dt);
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
//در پارامتر فیلد یک نیو درست کن بعد هر چیرو پاس کن تمام

rd.SetParameterValue("T1", D1);
rd.SetParameterValue("T2", D2);
crystalReportViewer1.Show();




break;

case "کل هزینه ها":
labelX1.Text = "کل هزینه ها";
ReportDocument rd = new ReportDocument();
rd.FileName = "KolHazineh.rpt";
con.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT Tarikh, SharheHazineh, Mablagh FROM TblHazineha", con);
DataTable dt = new DataTable();
da.Fill(dt);
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
//در پارامتر فیلد یک نیو درست کن بعد هر چیرو پاس کن تمام
string D1 = dateBox1.TextDate.ToString();
string D2 = txtTarikhName.TextDate.ToString();
rd.SetParameterValue("T1", D1);
rd.SetParameterValue("T2", D2);
crystalReportViewer1.Show();

break;




case "کل هزینه ها بر اساس تاریخ های انتخابی":
labelX1.Text = "کل هزینه ها بر اساس تاریخ های انتخابی";
string D1 = dateBox1.TextDate.ToString();
string D2 = txtTarikhName.TextDate.ToString();
ReportDocument rd = new ReportDocument();
rd.FileName = "KolHazineh.rpt";
con.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT Tarikh, SharheHazineh, Mablagh FROM TblHazineha WHERE Tarikh BETWEEN '" + D1 + "' AND '" + D2 + "'", con);
DataTable dt = new DataTable();
da.Fill(dt);
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
//در پارامتر فیلد یک نیو درست کن بعد هر چیرو پاس کن تمام

rd.SetParameterValue("T1", D1);
rd.SetParameterValue("T2", D2);
crystalReportViewer1.Show();




break;
default :
labelX1.Text = "فرم گزارشات صندوق";
MessageBox.Show("نوع گزارش را انتخاب نمایید");
break;

}





اینم برای درست کردن پارامتر در کریستال ریپورت به ترتیب شماره هخایی که زدم دقت کن اول یه پارامتر بساز اونو بکش روی فرم گزارشت توی کد های بالا هم که مثلا من تاریخ گزارش رو براش در نظر گرفتم رو خیلی راحت پاس میدی به گزارشت مثلا اگر کاربر گزارش کاستمایز بر اساس تاریخ انتخابی زد که از 01/11/92 تا 10/11/92 بود این در برگه گزارشتونم چاپ بشه



115906


مشکلی داشتی بگو تا کمکت کنم

امیر مهرشاد
شنبه 05 بهمن 1392, 17:54 عصر
راستی همه کانکشنها توی هر کیس باز شدند ولی بسته نشدند اونا رو ببند یادت باشه تا بمشکلی نخوری برای راحتی بزار توی try