View Full Version : سوال: مشکل در جستجو کریستال ریپورت
omidghadiri
سه شنبه 14 اردیبهشت 1389, 10:07 صبح
با عرض سلام خدمت دوستان
بازهم سئوال در مورد کریستال ریپورت 10 که واقعا مشکل ساز شده
از دوستان واقعا تقاضا میکنم به این مشکل رسیدگی کنن چون خیلی فوری هستش
من در پروژه ایکه دارم نیاز دارم دو table در ریپورتم فراخوانی بشه ولی مشکلم این هستش که ریپورت با یک جدول درست کار میکنه و عملیات جستجو رو به راحتی نشون میده ولی نمیدونم چرا وقتی جدول دوم رو میارم داخل ریپورتم دیگه سرچ نمیکنه وتمام اطلاعات جدول رو میاره و اونهائی که میخوام رو نشون نمیده
من عملیات سرچم با کد نویسی DAtaSet هستش یعنی مقادیر سرچ رو با دیتاست کد نویسی کردم.
تا اینجا وقتی روی1 جدول کار میکنم مشکلی نداره
حالا وقتی جدول دوم رو به کریستال ریپورت اضافه میکنم و میخوام دو تا دیتاست داشته باشم وجدول دوم رو هم سرچ کنه
اینجا مشکل به وجود میاد و دیگه هیچ جستجوئی کار نمیکنه
و نمیدونم چطور باید دیتاست دوم رو بهrpt.SetDataSource با دیتاست اول باهم بهش نسبت بدم
وکلا سر دوتا جدول در کرسیتال ریپورت مشکل دارم
باتشکر از دوستانی که کمک میکنن و توجه میکنن
sara.f
چهارشنبه 15 اردیبهشت 1389, 00:33 صبح
سلام
اول اینکه چرا متنتون اینطوری پرتاب شده سمت چپ؟! :لبخندساده:
و نمیدونم چطور باید دیتاست دوم رو بهrpt.SetDataSource با دیتاست اول باهم بهش نسبت بدم
دوم اینکه من متوجه نشدم شما چی گفتید!!!
سوم اینکه ، لطفا کدتون را بذارید اینجا، چون اینطوری من یکی که نمی تونم حدس بزنم مشکل از چیه؟ ( کدتون را توی تگ CODE بذارید)
mn_zandy63
چهارشنبه 15 اردیبهشت 1389, 01:21 صبح
سلام دوست من،
دقت داشته باشید که وقتی دو تا جدول دارید لازم نیست (و نباید) دو تا دیتاست داشته باشید. شما باید یک دیتاست با دو تا دیتاتیبل داشته باشید.
و بعد اون دیتاست رو با SetDataSource برای کریستال ست کنید.
موفق باشید.
omidghadiri
چهارشنبه 15 اردیبهشت 1389, 09:00 صبح
static public DataSet a()
{
string comand = "select nam,fam,te from t1 where nam='" + nam + "'and fam='" +design + "'";
connectiondb.Execute(comand);
SqlDataAdapter dap = new SqlDataAdapter(comand , connectiondb.con);
DataSet ds = new DataSet();
dap.Fill(ds);
return ds;
}
این کد دیتاست من هست حالا نمیدونم چطور باید جدول دوم رو به کجای این کد اضافه کنم
sara.f
چهارشنبه 15 اردیبهشت 1389, 11:14 صبح
کلا با این دستور شما می تونید dataset را برای گزارش ست کنید.
rpt.SetDataSource(ds);
حالا اگر دوتا جدول دارید، به هر حال که نمیخواید از دوتاش با هم گزارش بگیرید، شما به چه صورت می خواید با جداول کار کنید؟ یعنی مثلا دوتا button دارید که با کلیک بر هر کدوم ، از یکی از جداول گزارش می گیرید؟
mn_zandy63
پنج شنبه 16 اردیبهشت 1389, 00:48 صبح
static public DataSet a()
{
string comand = "select nam,fam,te from t1 where nam='" + nam + "'and fam='" +design + "'";
connectiondb.Execute(comand);
SqlDataAdapter dap = new SqlDataAdapter(comand , connectiondb.con);
DataSet ds = new DataSet();
dap.Fill(ds);
return ds;
}
این کد دیتاست من هست حالا نمیدونم چطور باید جدول دوم رو به کجای این کد اضافه کنم
سلام دوست من،
ببین به سادگی،
کافیه اونجا که داری دیتاست رو پر می کنی. نام جدول رو هم انتخاب کنی. بعد یک Command دیگه و یک جدول دیگه از همون دیتاست رو با Command جدید پر کنی.
به عنوان مثال کد خودت رو تغییر میدم، ببین این شکلی:
string comand = "select nam,fam,te from t1 where nam='" + nam + "'and fam='" + design + "'";
connectiondb.Execute(comand);
SqlDataAdapter dap = new SqlDataAdapter(comand, connectiondb.con);
DataSet ds = new DataSet();
تا اینجاش که کد خودته. البته فلسفه وجود اون خط Execute رو نمیدونم.
حالا به جای دستور Fill که نوشته بودی بنویس مثلا:
dap.Fill(ds, "t1");
اینجا مشخص کردی که از دیتاست ds جدول t1 پر شه.
حالا برای جدول دوم، ساده می نویسم. میتونی این شکلی بنویسی:
string comand2 = "....";
SqlDataAdapter dap2 = new SqlDataAdapter(comand, connectiondb.con);
dap2.Fill(ds, "t2");
خب حالا با استفاده از دستور select دومت جدولی به نام t2 در همون دیتاست ds پر کردی.
حالا کافیه بنویسی:
return ds;
این کد رو خیلی زیبا تر از این هم میتونی بنویسیش. اما سعی کردم با کمترین تغییرات نسبت به کد خودت بنویسم که درک کنی چه اتفاقی داره میافته.
خب، حالا دیتاستی داریم که دو تا جدول داره، این مشکلت حل میشه. اما ممکنه سمت نمایش گزارش به مشکل بر بخوری. گزارش رو چه طوری ساختی؟ به دیتابیس مستقیم وصل کردی؟ اونجا اسم جدولات چیه؟ اگه نمایش گزارشت به مشکل بر خورد، فایل کریستال رو هم بذار اینجا.
موفق باشی
omidghadiri
پنج شنبه 16 اردیبهشت 1389, 09:01 صبح
بی نهایت سپاسگذارم از پاسخت ، ممنون عزیز
ولی کریستال ریپورت کار نمیکنه و هیچ نتیجه ای رو نشون نمیده
mn_zandy63
پنج شنبه 16 اردیبهشت 1389, 15:37 عصر
سلام دوست من،
دو تا جدولی که پر میکنی، داخل کد، اسم یکیش t1 و اون یکی t2 هست؟
و هر کدوم از دستور های Select سه تا فیلد داره.
درسته؟
omidghadiri
جمعه 17 اردیبهشت 1389, 00:49 صبح
بله دو تا جدول هست که با استفاده از دیتاستی که کمکم کردید که کامل کردمش این دو تا جدول رو سرچ میکنم ولی در دیتاگرید میاره ولی در کریستال ریپورت نمیاره
sara.f
یک شنبه 19 اردیبهشت 1389, 21:29 عصر
بله دو تا جدول هست که با استفاده از دیتاستی که کمکم کردید که کامل کردمش این دو تا جدول رو سرچ میکنم ولی در دیتاگرید میاره ولی در کریستال ریپورت نمیاره
سلام
خب شما باید از SetDataSource برای ست کردن دیتاسورستون برای فرم گزارش استفاده کنید، این کار را انجام میدید؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.