ورود

View Full Version : پارامتر ورودی به یک گزارش



ali_mnkt
سه شنبه 18 فروردین 1388, 10:27 صبح
سلام به همه دوستان

من برای گزارش گیری از crystal reportو dataset و store procedure (در sql server) استفاده می کنم .

البته store procedure برای اجرا نیاز به یه پارامتر ورودی داره . کد زیر رو من در دکمه print

نوشتم.
کد:
private void button2_Click(object sender, EventArgs e)
{
sqlDataAdapter1.SelectCommand.CommandText = "exec namayesh_lavazem_factor_kharid " + 40 + "";
sqlDataAdapter1.Fill(dataSet1, "exec namayesh_lavazem_factor_kharid " + 40 + "");


CrystalReport3 x = new CrystalReport3();
x.SetDataSource(dataSet1);
crystalReportViewer1.ReportSource = x;


}

تا اینجا مشگلی نیست. اما هنگام اجرای برنامه و click بر روی دکمه print یه صفحه

باز می شود که پارامتر ورودی رو از من می خواد .


حالا من چی کار کنم تا این پارامتر رو از طریق برنامم ارسال کنم و دیگه این پنجره برای ارسال

پارامتر store procedure ظاهر نشه ؟

عکس اون پنجره که ظاهر می شه رو اینجا در فایل زیر گذاشتم

NewFoxStudent
سه شنبه 18 فروردین 1388, 10:32 صبح
SqlParameter sqlP = new SqlParameter("parameterName", Value);
sqlDataAdapter1.SelectCommand.Parameters.Add(sqlP) ;

ali_mnkt
سه شنبه 18 فروردین 1388, 10:34 صبح
فایلشو نتونستم اینجا بذارم ( نمی دونم چرا اجازه نمی ده) اما من این سوال رو تو تالار

crystal report نیز مطرح کردم که متاسفانه جوابی نگرفتم . تو اونجا تصویرش هست لطفا

از آدرس زیر یه سری به اونجا بزنید و اگه می تونید مشگل من رو حل کنید چون خیلی گیرم :ناراحت:

http://barnamenevis.org/forum/showthread.php?t=153679

NewFoxStudent
سه شنبه 18 فروردین 1388, 10:41 صبح
با استفاده از کد بالا میتونی پارامترهای مورد نیازو به procedur بفرستی و دیگه اون پیغام رو نبینی
اگه مشکل دیگه ای هست بگید

Happy_davood
سه شنبه 18 فروردین 1388, 10:42 صبح
پنجره ای که باز میشه و از شما پارامتر رو می خواد اصلاً ربطی به SP نداره .
شما داخل خود گزارش از پارامتر استفاده کردید که زمان اجرا این پارامتر ها رو باید به عنوان ورودی به گزارشتون پاس کنید .

اگر SP برای اجرا نیاز به پارامتر داشت که پاس نشده بود خطای RunTime می داد و نه پنجره .

یه نگاه به گزارشتون بندازید حتماً پارامتر داره .

NewFoxStudent
سه شنبه 18 فروردین 1388, 10:47 صبح
شما خود sp رو به گزارشتون Add کردید و در این حالت باید به گزارشتون پارامتر پاس کنید

Happy_davood
سه شنبه 18 فروردین 1388, 10:47 صبح
من به اون تصویر که گذاشته بودید هم نگاه کردم . حدسم درست بود . ایراد از طرف گزارش هست .

من یه کد نمونه می زارم تا مشکلتون حل بشه :




Docs_Transference.SetParameterValue("DocDate", this.dateTextBoxDocDate.Text.Trim());



من تواین گزارش یه پارامتر تاریخ دارم که اون رو با کد بالا از یه TextBox می گیرم و پاس می کنم به گزارش . در غیر اینصورت همون پنجره برای من هم باز میشد

ali_mnkt
سه شنبه 18 فروردین 1388, 11:12 صبح
مرسی دوست عزیز از راهنماییت.

در نظر بگیر من یه فایل crystal report به نام crystalreport3 به پروژم اضافه کردم ویه

crystalreport viewer و از طریق یه dataset می خوام اطلاعات در crystalreport viewer

نمایش بدم. dataset هم از طریق یه sqldataadapter که یه stote procedure رو اجرا می کنه

پر می شه. پارامتر ورودی sp هم l_f_id@ هستش . حالا من کد زبر رو نوشتم.


این خط ارسال پارامتر به crystalreport رو با این مشخصاتی که گفتم چطوری باید بنویسن ؟




private void button2_Click(object sender, EventArgs e)
{
sqlDataAdapter1.SelectCommand.CommandText = "exec namayesh_lavazem_factor_kharid " + 40 + "";




sqlDataAdapter1.Fill(dataSet1, " namayesh_lavazem_factor_kharid ");

sqlDataAdapter1.SelectCommand.Parameters.Add(sqlp) ;

CrystalReport3 x = new CrystalReport3();

x.SetDataSource(dataSet1);

crystalReportViewer1.ReportSource = x;





}

ali_mnkt
سه شنبه 18 فروردین 1388, 12:07 عصر
مشگل حل شد :بوس:

amir.khanlari
پنج شنبه 20 فروردین 1388, 15:39 عصر
با سلام .
كدي كه اقا داود نوشتند يك مشكل داره و اون هم اينه كه اگه دكمه رفرش گزارش فعال باشه و كاربر اون رو بزنه باز هم اون صفحه اي كه پارامتر ورودي رو مي گيره ظاهر ميشه!!

Happy_davood
پنج شنبه 20 فروردین 1388, 17:04 عصر
به نکته جالبی اشاره کردید . دستتون درد نکنه .