PDA

View Full Version : سوال: نحوه گرفتن گزارشی از رکوردی دارای شرط



ma.andishe
شنبه 03 بهمن 1388, 07:36 صبح
سلام.چطور میتونیم از 1 رکورد دارای شرط گزارش بگیریم
مثلا همه دانشجویانی دانشکده علوم که معدل انها 18 است
از یکی از دوستان شنیده بودم میتونی dataset رو بیاری تو کریستال ..........؟

in_the_rain
پنج شنبه 08 بهمن 1388, 18:22 عصر
private void btnSearch_Click(object sender, EventArgs e)
{
string date1 = clsDataAccess.ConvertToMiladi(txtDate1.Text);
string date2 = clsDataAccess.ConvertToMiladi(txtDate2.Text);
string sqlselect = "SELECT Babat . Mablagh, IDBabat.Sharh, tcheck.CheckNO, tcheck.CheckdateSh,tcheck.Jari, tcheck.Bank, tcheck.NameFamily FROM (checks.dbo.IDBabat IDBabat INNER JOIN checks.dbo.Babat Babat ON IDBabat.ID=Babat.IdBabat) INNER JOIN checks.dbo.tcheck tcheck ON (Babat.CheckNo=tcheck.CheckNO) AND (Babat.Jari=tcheck.Jari) where tcheck.Mablagh <>'0' ORDER BY tcheck.Jari, tcheck.CheckNO";
//string sqlselect = "SELECT Babat . Mablagh, IDBabat.Sharh, tcheck.CheckNO, tcheck.CheckdateSh,tcheck.CheckdateM, tcheck.Jari, tcheck.Bank, tcheck.NameFamily FROM (checks.dbo.IDBabat IDBabat INNER JOIN checks.dbo.Babat Babat ON IDBabat.ID=Babat.IdBabat) INNER JOIN checks.dbo.tcheck tcheck ON (Babat.CheckNo=tcheck.CheckNO) AND (Babat.Jari=tcheck.Jari) where tcheck.CheckdateM between '" + date1 + "' and '" + date2 + "' ORDER BY tcheck.Jari, tcheck.CheckNO";
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sqlselect, conn);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Close();
CrystalReport1 crys = new CrystalReport1();
crys.SetDatabaseLogon("sa", "sa", ".", "checks");
crys.RecordSelectionFormula = "{tcheck.CheckdateM} in Date('"+date1+"') to Date('" + date2+ "')";

//crys.SetDataSource(dt);


crystalReportViewer1.ReportSource = crys;
//crystalReportViewer1.RefreshReport();
}
این کد رو با کلی زحمت و جستجو کشف کردم ببین اول تاریخ رو به میلادی تبدیل کردم تا بتونم از امکانات و توابع داخلی کریستال رپورت استفاده کنم بعدش کویری زدم تا یه سری روکوردها برگردن بعد از روی سکلشن فرمول رپورت هم شرط گذاشتم
کار میکنه بیست
امیدوارم استفاده کنی

in_the_rain
پنج شنبه 08 بهمن 1388, 18:23 عصر
یادم رفت بگم که اختلاف بین دو تاریخ مشکل من بود که با استفاده از
"{tcheck.CheckdateM} in Date('"+date1+"') to Date('" + date2+ "')";
حل شده

samaram
جمعه 09 بهمن 1388, 21:26 عصر
سلام. من یه سوالی مشابه ایشون دارم اما راستش از جوابی که به ایشون دادین چیزی متوجه نشدم.
ببینید من گزارشم رو ساختم . طبیعتا در حالت فعلی وقتی گزارشم اجرا میشه تمام فیلدهای بانک رو نشون میده. حالا میخوام بگم فقط یک فیلد رو نشون بده. اونم فیلدی که id اون برابر با مقدار متغیری هست که بین فرم هام مقدارش تبادل میشه و اینه : common.sh
در توضیحات کریستال ریپورت خوندم که میتونم در صفحه گزارشم از پنجره ی Field Explorer روی گزینه ی Sql Expression Fields کلیک کنید و در این پنجره دستور رو تایپ کنید.
این راه منو به هدف مورد نظرم میرسونه؟ اگه درسته چطور دستور sql رو اینجا بنویسم؟ دقیقا مشابه داخل کدهامو کپی کنم به اینجا؟ نمیدونم نحوه ی نوشتن دستور زیر در این پنجره چطوره:



sqlcommand cmd = new sqlcommand("select * from TB_customer where sh=@ssh",con);
cmd.Parameters.AddWithValue("@ssh",common.id);

اون تعاریف اولیه ی connection چی؟

samaram
شنبه 10 بهمن 1388, 19:44 عصر
آیا راه دیگه ای هم داره؟

in_the_rain
چهارشنبه 28 بهمن 1388, 00:38 صبح
سلام ببخش منو که دیر جواب دادم ببین خیلی راحته
شما میری و با ویزارد رپورتتو درست میکنی و اون همه چیز رو واست میاره
تا اینجا هیچ مشکلی نیست
حالا میخواهیم کویری بزنیم واسه رپورت
با استفاده
crystalreport.RecordSelectionFormula مشکل حل میشه
فقط نوشتن فرمول میمونه که یه نمونه بالا گذاشتم که سخت بود واسم حل کردنش چون روی تاریخ بود و بازه زمانی رو میخواستم
همونطوری که نوشتم نگاش کن و ایده بگیر
موفق و خوش باشی

in_the_rain
چهارشنبه 28 بهمن 1388, 00:42 صبح
crys.RecordSelectionFormula = "{tcheck.CheckNO} ='4545'
ببخش که قروقاطی شد عین همین بنویس روی ایونت کلیک دکمه
این هم کد کامل که روی تاریخ select میزنه
امیدوارم استفاده کنی



private void btnPrivewRonevesht_Click(object sender, EventArgs e)
{
// crystalReportViewer1.Refresh();
//selectReport();
SqlConnection conn = new SqlConnection("server=(local);database=check1;uid=sa;pwd=sa");
date1 = clsDataAccess.ConvertToMiladi(txtDate1.Text);
date2 = clsDataAccess.ConvertToMiladi(txtDate2.Text);
string sqlselect = "SELECT Babat.Mablagh,IDBabat.Sharh, tcheck.CheckNO, tcheck.CheckdateSh,tcheck.Jari, tcheck.Bank, tcheck.NameFamily,tcheck.CheckdateM FROM (check1.dbo.IDBabat IDBabat INNER JOIN check1.dbo.Babat Babat ON IDBabat.ID=Babat.IdBabat) INNER JOIN check1.dbo.tcheck tcheck ON (Babat.CheckNo=tcheck.CheckNO) AND (Babat.Jari=tcheck.Jari) where tcheck.Mablagh <>'0' ORDER BY tcheck.CheckdateM asc";
//string sqlselect = "SELECT Babat . Mablagh, IDBabat.Sharh, tcheck.CheckNO, tcheck.CheckdateSh,tcheck.CheckdateM, tcheck.Jari, tcheck.Bank, tcheck.NameFamily FROM (checks.dbo.IDBabat IDBabat INNER JOIN checks.dbo.Babat Babat ON IDBabat.ID=Babat.IdBabat) INNER JOIN checks.dbo.tcheck tcheck ON (Babat.CheckNo=tcheck.CheckNO) AND (Babat.Jari=tcheck.Jari) where tcheck.CheckdateM between '" + date1 + "' and '" + date2 + "' ORDER BY tcheck.Jari, tcheck.CheckNO";
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sqlselect, conn);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Close();

CrystalReportRonevesht crysRonevesht = new CrystalReportRonevesht();
// crysRonevesht.SetDatabaseLogon("sa", "sa", ".", "check1");
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = "local";
connectionInfo.UserID = "sa";
connectionInfo.Password = "sa";
connectionInfo.DatabaseName = "check1";

crysRonevesht.RecordSelectionFormula = "{tcheck.CheckdateM} in Date('" + date1 + "') to Date('" + date2 + "')";
crysRonevesht.SetDataSource(dt);

crystalReportViewer1.ReportSource = crysRonevesht;
//crystalReportViewer1.RefreshReport();
}

چینی ساز
سه شنبه 24 فروردین 1389, 11:09 صبح
سلام
من می خوام با کریستال ریپورت گزارش گیری کنم با شرایط خاص ولی هر کاری می کنم نمی تونم بانک من اکسس
بعنوان نمونه چند تکس باکس و چک باکس دارم که با علامت دار کردن هر چک باکس _ تکس باکس فعال شده و بر اساس اون گزارش گیری کنه
مثلا
1- نام
2-شغل
3-آدرس
-مدرک
-..
ممنون میشم اگه نمونه ای باشه کمک کنید
http://barnamenevis.org/forum/images/statusicon/user_online.gif http://barnamenevis.org/forum/images/buttons/report.gif (http://barnamenevis.org/forum/report.php?p=951641) http://barnamenevis.org/forum/images/misc/progress.gif http://barnamenevis.org/forum/images/buttons/edit.gif (http://barnamenevis.org/forum/editpost.php?do=editpost&p=951641) http://barnamenevis.org/forum/images/buttons/quote.gif (http://barnamenevis.org/forum/newreply.php?do=newreply&p=951641) http://barnamenevis.org/forum/images/buttons/multiquote_off.gif (http://barnamenevis.org/forum/newreply.php?do=newreply&p=951641) http://barnamenevis.org/forum/images/buttons/quickreply.gif (http://barnamenevis.org/forum/newreply.php?do=newreply&p=951641)

sm_2010
جمعه 27 فروردین 1389, 13:41 عصر
با سلام
منم به کمکتون احتیاج دارم
در مورد همین ریپورت گیریه
که قراره با توجه به select خاصی اتقاف بیفته من از تاپیک ها استفاده کردم ولی راستش سر در نیاوردم
میشه کمکم کنین؟
مشکلم مثل دوستمونه ولی بانک من sql