PDA

View Full Version : ارسال پارامتر به گزارش از طریق Stored Procedure



hmariya
چهارشنبه 16 دی 1388, 22:42 عصر
با سلام.
من با استفاده از یک Stored Procedure می خوام یک پارامتر (نام مشتری) رو به گزارش بفرستم. این پارامتر توی یک فرم و یک Text Box وارد میشه...

کد SP به صورت زیر هست:



create PROCEDURE [dbo].[CssSearch]
@intCSid int
AS
Select * From Customer
Where intCustomerId=@intCSid


کد C# که برای اجرای این کار نوشتم به صورت زیر هست:



string strCon;
SqlConnection con;
strCon = "Data Source=.;Initial Catalog=SaapStock;Integrated Security=True";
con = new SqlConnection(strCon);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();

SqlCommand cmd;
cmd = new SqlCommand("CssSearch", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@intCSid", SqlDbType.Int).Value = intCustomerIdTextBox.Text.Trim();
da.SelectCommand = cmd;
con.Open();
da.Fill(dt);
CrystalReport1 rpt = new CrystalReport1();
rpt.SetDataSource(dt);
rpt.Load();
Form1 myform = new Form1();
myform.Show();



con.Close();


حالا وقتی که اجرا می کنم. قبل از لود شدن گزارش با وجودی که در فرم پارامتر رو وارد کردم اما دوباره مقدار پارامتر رو می خواد مثل فایل ضمیمه...

لطفا یکی کمکم کنه

hmariya
پنج شنبه 17 دی 1388, 23:25 عصر
یکی از اساتید کمک کنه لطفا خیلی ضروریه...

hakelberfin
پنج شنبه 17 دی 1388, 23:53 عصر
سلام
شما در کریستال ریپورت پارامتری رو تعریف کردید . ولی اون پارامتر رو مقداردهی نمی کنید .

برای مقداردهی مقدار موردنظرت رو به این دستور انتساب بده


CrystalReport1.SetParameterValue("CustomerName", "Ramin");

hmariya
جمعه 18 دی 1388, 13:44 عصر
سلام. ببخشید درست متوجه نشدم یعنی باید به جای "Ramin" تو خط کد شما پارامتری رو که تعریف کردم رو بگذارم؟ این کار رو کردم اما نشد:



CrystalReport1 rpt = newCrystalReport1();
rpt.SetDataSource(dt);


rpt.SetParameterValue("intCustomerID", "@intCsid");
rpt.Load();


پیغام خطایی که میده اینه:
Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

اگه بیشتر توضیح بدین یک دنیا ممنون میشم

ASKaffash
شنبه 19 دی 1388, 12:40 عصر
سلام
این روش را تست کنید :


SqlConnection C = new SqlConnection("Data Source=.;Initial Catalog=SaapStock;Integrated Security=True");
DataTable dt = new DataTable();
C.Open();
new SqlDataAdapter("CssSearch " + intCustomerIdTextBox.Text.Trim, C).Fill(dt);
C.Close();
CrystalReport1 rpt = newCrystalReport1();
rpt.SetDataSource(dt);
......