PDA

View Full Version : سوال: چگونه میتوان دیتابیس را با یک فیلد در کریستال ریپورت با combobox فیلتر کرد؟



keyvan723
پنج شنبه 19 دی 1392, 15:26 عصر
با سلام خدمت شما بزرگوارن من یک برنامه ای توی سی شارپ نوشتم که داخل فرم میتونم با combobox خروجی DataGrideView رو فیلتر کنم یعنی لیست گیریم بر حسب نوع شغل انجام بگیره حالا میخوام همین کارو ببرم به کریستال ریپورت از دوستان کسی میتونه با کدنویسی راهنمائیم کنه که چطور میشه خروجی کریستال ریپورت و با مقدار فیلدی مثل شغل که از دیتا بیس میاد فیلتر کرد بازم هم ممنونم.

keyvan723
شنبه 28 دی 1392, 09:27 صبح
کسی از دوستان نمیتونه راهنمائیم کنه

Davidd
شنبه 28 دی 1392, 09:50 صبح
DataTable yourDataTable=new DataTable();
//yourDataTable ra ba query delkhah por konid

yourCrystalReport yourReport = new yourCrystalReport();

yourReport.SetDataSource(dt);

keyvan723
سه شنبه 01 بهمن 1392, 10:22 صبح
سلام دوست عزیزم من کد امتحان کردم منطق کد درست نمیدونم من بد استفاده میکنم یا برنامم ایراد داره


DataTable dt2 = new DataTable();
con.Open();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = con;
dt2.Clear();
da.SelectCommand.CommandText = "select * from tblMain where position=@x1";
da.SelectCommand.Parameters.AddWithValue("@x1", comboBox1.Text);

dt2.Clear();
da.Fill(dt2);
con.Close();
CrystalReport1 yourReport = new CrystalReport1();

yourReport.SetDataSource(dt2);

این قطعه کد منه توی لود فرم قرار دادم جواب نداد توی قسمت selectedIndexChangedیا SelectedValueChanged ، کومبوباکس قرار دادم اما باز هم بی نتیجه موند کارم ممنون میشم راهنمائیم کنید.

keyvan723
شنبه 05 بهمن 1392, 10:36 صبح
سلام خدمت همه دوستان
مشکل فیلتر کردن کریستال ریپورتم حل شد
اما Refresh نمیشه crystalReportViewer1.Refresh();
نمیتونم بصورت داینامیکش کنم که با انتخاب مقادیر comboboxخودش آپدیت بشه دیگه به صورت دستی از منوی کریستال ریپورت این کارو نکنم
ممنون میشم تو این زمینه هم راهنمائیم کنید.

keyvan723
شنبه 05 بهمن 1392, 11:56 صبح
کد اصلیم به این صورت

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
con.Open();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = con;
dt3.Clear();
da.SelectCommand.CommandText = "select * from tblMain where position=@x1";
da.SelectCommand.Parameters.AddWithValue("@x1", comboBox1.Text);

da.Fill(dt3);
con.Close();
CrystalReport21.SetDataSource(dt3);
crystalReportViewer1.Refresh();
}
اما Refresh نمیشه بصورت دستی از منوی کریستال ریپورت رفرش میشه اما میخوام با انتخاب گزینه های ComboBox رفرش بشه .
از دوستان اگه کسی بلده لطفا راهنمائیم کنه
بازم سپاسگذارم از همراهیتون

sara_traveler
یک شنبه 06 بهمن 1392, 09:13 صبح
یعنی شما کمبو باکس که میزنید جواب در گرید می خواید دیده بشه و بعد گزارش هم باز بشه؟
معمولا برای چاپ یک دکمه میذارن و داخل اون چاپ و باز شدن کریستال میگذارن

saeedr22
یک شنبه 06 بهمن 1392, 09:25 صبح
اینکه شما بخوایین مقدار دیتا تیبل را از برنامه به کریستال بفرستید کار درستی نیست..شما باید کریستال ریپورد رو مستقیم به دیتابیس وصل کنید و کانکش استرینگ صحیح رو از برنامه به کریستال برستین و وایه فیلتر کردن از برنامه به اون دیتا سورس مقدار بفرستین

keyvan723
یک شنبه 06 بهمن 1392, 12:20 عصر
سلام دوستان خوبم
نه من همچین قصدی ندارم که اطلاعات توی گریدویو نمایش بدم بعدش چاپ کنم
من روی فرمی که CrystalReportViewer گذاشتم یک کمبوباکس هم قرار دادم و درست هم select میکنه اما به صورت اتوماتیک صفحه رو Refresh نمیکنه و باید از منوی CrystalReportViewer به صورت دستی Refresh کنم تا Select کمبوباکسم توی گزارش نمایش داده بشه مشکلم پویا نبودن گزارشمه
ممنونم دوستان عزیزم

sara_traveler
یک شنبه 06 بهمن 1392, 17:32 عصر
اينطري بنويسيد جواب ميده
1- در لود فرم مقدار كمبو پر كنيد

2- در
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
dt = MySelect(" select * from sandhesabdari where sandsn= '" + comboBox1.Text + "' ");
orpt.SetDataSource(dt);
crystalReportViewer1.ReportSource = orpt;

}

اينها بگذاريد
بعد هر ار مقدار كمبو تغيير كنه كريستال خودش رفرش ميشه من امتحان كردم و جواب داد

اين هم كلاس myselect

private SqlCommand cmd;
private SqlDataAdapter da;
private DataTable dt;
public DataTable MySelect(string sql)
{

SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=hesabdari;Integrated Security=True;");
dt = new DataTable();
cmd = new SqlCommand(sql, conn);
da = new SqlDataAdapter(cmd);
da.Fill(dt);
return dt;
}

keyvan723
دوشنبه 07 بهمن 1392, 18:43 عصر
ممنونم درست شد باز هم از همه دوستان سپاسگزارم