PDA

View Full Version : ارسال پارامتر به crystal report



amir_pro
جمعه 23 آذر 1386, 00:52 صبح
سلام به دوستان
از داخل combobox کاربر باید نام یکی از ماههای سال را انتخاب کند و پس از اینکه دکمه چاپ را زد مقدار انتخاب شده combobox به گزارش پاس شود و بعد از آن چاپ شود. چه طور باید این کار را انجام دهم؟

ali2000_1358
یک شنبه 30 دی 1386, 09:03 صبح
اگر مشکلتون تو گرفتن مقدار سال از combo می باشد . combobox1.text این مقدار ر ا با شما می دهد ولی اگر مشکل در فرستادن این مقدار به کریستال می باشد بگید تا شما رو راهنمائی کنم

hassan razavi
یک شنبه 30 دی 1386, 10:26 صبح
با توجه به عنوان سوال ، منظور دوستمون ارسال پارامتر به کریستال هست. برای اینکار می تونید از متد SetParameterValue شی گزارش مورد نظرتون استفاده کنید.

amir_pro
یک شنبه 30 دی 1386, 15:15 عصر
ممنون جناب رضوی میرم داخل msdn ولی میشه برنامه ای در این مورد بدهید.
جناب رضوی میشه راهنمایی کامل تری بفرمایید

hassan razavi
یک شنبه 30 دی 1386, 16:59 عصر
در قسمت Field Explore محیط طراحی کریستال یک Paramet ایجاد کنید. سپس انرا هر جای گزارش می خواهید قرار دهید. سپس از طریق متد SetParameterValue شی ایجاد شده از
گزارشتون ، آنرا مقدار دهی کنید.

ebtekar
یک شنبه 30 دی 1386, 22:09 عصر
اینطوری بنویس به صورت کاملا پویا البته خودت ببین چطوری دوست داری ولی من اکثرا اینجوری می نویسم مشکلی هم ندارم



if (comboBox2.Text == "قطعات ثبت شده")
{
//تهیه گزارش پرینت
OleDbConnection objConnection = newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Application.StartupPath + "/backup/wbanck.mdb" + ";Persist Security Info=False");
OleDbDataAdapter objDataAdapter = newOleDbDataAdapter();
DataSet objDataSet = newDataSet();
objDataAdapter.SelectCommand = newOleDbCommand();
objDataAdapter.SelectCommand.Connection = objConnection;
objDataAdapter.SelectCommand.CommandText = "Select sabt.serial,sabt.moshakhasat,sabt.daryaft,sabt.war anty,sabt.date,sabt.moshkel,sabt.tozihat,usserpass .nsherkat from sabt,usserpass where sabt.waranty = '" + comboBox1.Text + "' AND sabt.date >= '" + maskedTextBox1.Text + "' AND sabt.date <= '" + maskedTextBox2.Text + "'";
objDataAdapter.SelectCommand.CommandType = CommandType.Text;
objConnection.Open();
// بار گذاری جدول در دیتا آداپتور
objDataAdapter.Fill(objDataSet,"sabt");
objConnection.Close();
//********************************************
frm_reportkoli frm_residemoshtari = newfrm_reportkoli();
reportgood1.SetDataSource(objDataSet.Tables["sabt"].DefaultView);
frm_residemoshtari.crystalReportViewer1.ReportSour ce = reportgood1;
frm_residemoshtari.ShowDialog();
//**********************************************
comboBox2.Text = "";
}

Mahdi.Kiani
یک شنبه 30 دی 1386, 22:45 عصر
اینطوری بنویس به صورت کاملا پویا البته خودت ببین چطوری دوست داری ولی من اکثرا اینجوری می نویسم مشکلی هم ندارم


یه سوال

شما خاصیت modifier مربوط به crystalReportViewer1 در فرم frm_reportkoli را روی public تنظیم کردین؟
اگر آره که باید بگم کار درستی نکردین

یه نکته دیگه اینکه برای fetch کردن داده ها از کد زیر که کمتر هست هم می تونین استفاده کنین
مضاف بر اینکه نیاز به باز و بسته کردن connection هم ندارین



OleDbConnection con = new OleDbConnection("Connection String");
OleDbDataAdapter da = new OleDbDataAdapter("Query String", con);
DataSet ds = new DataSet();
da.Fill(ds, "Table Name");

Mahdi.Kiani
یک شنبه 30 دی 1386, 23:01 عصر
ممنون جناب رضوی میرم داخل msdn ولی میشه برنامه ای در این مورد بدهید.
جناب رضوی میشه راهنمایی کامل تری بفرمایید

توضیحات که کامل هست
1) در فایل کریستال ریپورت مربوطه (مثلا CrystalRepoert1) در پنجره Field Explorer روی گزینه ParameterFields کلیک راست کنید و با گزینه New یک فیلد جدید بسازید (مثلا testParam)
2) یک عدد CrystalReportViewr میذارین روی فرمتون (به مقدار لازم). مثلا CrystalReportViewer1

3) خاصیت reportSource مربوط بهCrystalReportViewer1 را روی CrystalRepoert1 تنظیم کنید
4) با کد زیر می تونین مقدار testParam را ست کنید



CrystalReport11.SetParameterValue("testParam", pVal);



به جای pVal هم مقدار مورد نظرتون را میذارین
5) دیگه ساده تر از این نمیشد گفت
6) حالا می تونین چاییتون را بخورین و به خودتون آفرین بگین . چون شما موفق شدید

یا علی

pourang_us
سه شنبه 18 خرداد 1389, 08:00 صبح
سلام
دوستان من بعد از سه سال از این مطلب استفاده کردم اما موضوع این هست که من در زمان اجرا از همین کد برای ارسال پارامتر به پزارشم استفاده میکنم اما هنگام اجرای گزارش یک فرم باز میشه و از من مقدار پارامتر رو میخواد.
کسی میدونه من کجای کار رو اشتباه میرم؟؟
کد من





Dim MyReport As New CrstalReport001
MyReport .SetParameterValue("FarsiDate", TempFDate) aa



متغیر TempDate هم حاوی تاریخ شمسی من هست.

با سپاس

mh1365
پنج شنبه 20 خرداد 1389, 18:38 عصر
سلام دوست عزیز
شما کدتو به این صورت بنویس

CrystalReportViewer1.ReportSource = rpt
rpt.SetParameterValue("font", "B Titr")

یعنی بعد از اینکه سورساتو مشحص کردی پارامتراتو مقدار بده آخر از همه حتما مشکلت حل میشه

pourang_us
یک شنبه 23 خرداد 1389, 08:39 صبح
با تشکر از شما دوست عزیز
واقعا خیلی گیر کرده بودم با راهنمایی شما و جابجایی دو خط کدم درست شد


موفق باشید

samiradormohammadi
یک شنبه 03 مرداد 1389, 10:02 صبح
خیییییییییییلی ممنون خیلی به درد خورد

mrs Izadi
دوشنبه 15 فروردین 1390, 10:55 صبح
سلام
من هم این مشکل رو دارم اما با راهنمایی که دوستمون کرده مشکلم حل نشد من کدهامو اینجا میذارم لطفا راهنماییم کنید
Report.rptReceipt rptReceipt = new SchoolRegistrations.Report.rptReceipt();
rptReceipt.SetDataSource(dSetCash);
Report.Formpreview frmprintpreview = new SchoolRegistrations.Report.Formpreview();
frmprintpreview.rptViewer.ReportSource = rptReceipt;
rptReceipt.SetParameterValue(0, CommonClass.PersiaDate.GetSystemPersiaDate(System. DateTime.Now));

farzad_1354
پنج شنبه 04 اردیبهشت 1393, 21:24 عصر
با سلام اساتيد محترم
من يه گزارش دارم که با زدن يه دکمه فرم محتوي گزارش رو لود ميکنه تا اينجاي کار مشکلي ندارم
در اين گزارش يک subreport دارم که ديتاهاي توش لود نميشه
کلا چطور ميشه سورس سابريپورت داخل يک ريپورت رو مقدار دهي کرد کدي که استفاده کردم به اين صورته

string CTS = @"SELECT * FROM PPMPRT WHERE ID = '" + frm1.ID.Text + "'";
SCM.Parameters.Clear();
SDA.SelectCommand = SCM;
SDA.SelectCommand.CommandText = CTS;
SDA.SelectCommand.Connection = SCO;
DataTable DT = new DataTable();
DataSet ds = new DataSet();
if (SCO.State != ConnectionState.Open) SCO.Open();
SDA.Fill(DT);
ReportDocument RD = new ReportDocument();
RD.Load("rptPPM.rpt");
RD.SetDataSource(DT);
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();