View Full Version : سوال: نمایش اطلاعات دو جدول در یک گزارشگیری
misagh1370
سه شنبه 01 مرداد 1392, 02:04 صبح
سلام
دوستان من گزارشگیرمو با کریستال ریپورت انجام میدم در واقع با نمایش اطلاعات از یک جدول در گزارشم مشکلی ندارم اما وقتی میخوام اطلاعات دو یاچندجدول با ارتباط یک به چند یا چند به چند رو در یک ریپورت نشون بدم کد نویسشو بلد نیستم.مثلا میخوام یه تکست باکس رو فرمم داشته باشم که با وارد کردن نام شرکت از جدول شرکت در اون تکست باکس ،اطلاعات همه کارمندای اون شرکت رو ا ز جدول کارمند توی گزارشم نشون بده.
دوستان خواهشا راهنمایی کنید.
ممنون
systam
سه شنبه 01 مرداد 1392, 09:25 صبح
سلام
این کار رو توی کریستال نمیدونم شدنی یانه
ولی توی گرید با inner join انجام دادم
یه جستجو بزن پیدا میکنی
misagh1370
سه شنبه 01 مرداد 1392, 12:01 عصر
دوست عزیز من با کدنویسی واسه گرید مشکلی ندارم . خواهش میکنم هرکس ریپورت ویو همچین کدی نوشته راهنمایی کنه. فایلهای آموزشی زیادی رو گرفتم اما همه مبتدین. وقت زیادی ندارم دوستان راهنمایی کنید لطفا
MAJIDVADOOSTAN
سه شنبه 01 مرداد 1392, 17:42 عصر
دوست عزیز منم مبتدی ام اما از روش زیر استفاده می کردم
CrystalReport4_ReportofDrug rpt = new CrystalReport4_ReportofDrug(); //The report you created.
SqlConnection myCon;
SqlDataAdapter myAdapter;
ReportofDrugDataSet myDataset = new ReportofDrugDataSet(); //The DataSet you created.
myCon = new SqlConnection("data source=.\\sqlexpress; Database=S; Integrated Security=true");
string mj = "SELECT PersonalInformation.I_MemberId, PersonalInformation.I_Name,"+
"PersonalInformation.I_Family, Prescription.Pre_MemberId, Prescription.Pre_StartDate, "+
"SUM(Prescription.Pre_Doz) AS Pre_Doz FROM PersonalInformation INNER JOIN "+
"Prescription ON PersonalInformation.I_MemberId = Prescription.Pre_MemberId where Pre_StartDate Between
'"+StartDate_Lbl.Text+"' and '"+EndDate_Lbl.Text+"' "+
" GROUP BY PersonalInformation.I_MemberId, PersonalInformation.I_Name, PersonalInformation.I_Family,"+
"Prescription.Pre_MemberId, Prescription.Pre_StartDate order by I_MemberId";
myAdapter = new SqlDataAdapter(mj, myCon);
myAdapter.Fill(myDataset, "Drug");
rpt.SetDataSource(myDataset);
//rpt.SetParameterValue("MemberName", NameandFamily_Lbl.Text);
rpt.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4;
rpt.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape ;
crystalReportViewer1.ReportSource = rpt;
اول یک دیتا اداپتور می ساختم و تو قسمت query builder اون فیلدایی که میخاستم رو انتخاب می کردم و در نهایت کوئری رو به صورت دیتاست ذخیره می کردم. بعد تو لود گزارشم کد بالا رو قرار می دادم.
misagh1370
سه شنبه 01 مرداد 1392, 22:35 عصر
ممنون.اما من با vb.net کد نویسی میکنم.دوستان هرکس همچین کدی به vb.netداره من رو از راهمناییش بی بهره نذاره.
ممنونم
MAJIDVADOOSTAN
چهارشنبه 02 مرداد 1392, 00:06 صبح
روشش اینه میتونی اونجا پیاده کنی مهم دیتا ست و پرکردنشونه
misagh1370
چهارشنبه 02 مرداد 1392, 01:54 صبح
ممنون میشه در مورد QUERYتون یکم واسم توضیح بدین
از دستور گروپ واسه گروه بندی اطلاعات در گزارش استفاده کردین؟
دوست عزیز شرمنده اگه فایل آموزشی گزارشگیری پیشرفته دارین بذارین دیگه خیلی ممنون میشم.
سپاس فراوان
fakhravari
چهارشنبه 02 مرداد 1392, 15:40 عصر
در كريستال بايد sub report طراحي كرد.
سايت اغازه فكر كنم يك فيلم آموزشي داشت.
MAJIDVADOOSTAN
چهارشنبه 02 مرداد 1392, 17:49 عصر
من دو تا جدول داشتم و با توجه به نیازم اونا رو جوین و گروه بندی کردم. شما می خوای اطلاعات دو تا جدول رو استفاده کنی پس احتمالا یک راهش جوین کردن جدولاست یا ضربشون. درسته؟ من این کوئری رو برای دوتا جدول نوشتم. دستور group by هم برای استفاده کردن از sum استفاده کردم. منم خیلی با این قضیه ور رفتم تا این روشو پیدا کردم. یه بار دیگه مراحلو میگم:
1- اول از add new data source تو قسمت data یک دیتاست خالی ایجاد کنید
2- دیتا ست رو باز کنید و از tools یک dataadapter بندازین تو صفحه
3- صفحه ساخت کوئری خود به خود باز میشه کوئری کلی رو با استفاده از query builder اینجا بساز. یعنی فقط از دوتا جدول فقط فیلدایی که میخای رو تیک بزن و کوئری رو ایجاد کن. اینجا شرط where رو برای انتخاب فیلدایی که میخای استفاده نکن . یعنی محدودیت انتخاب رو اینجا نزار اجاز بده همه دیتا انتخاب بشه
4- یک ریپورت بساز
5- دیتا سورسشو این دیتاست بزار و طراحیتو انجام بده
6- حالا تو لود گزارش کد هایی مثه کد بالا رو قرار بده. یعنی کوئری مد نظرت رو برای انتخاب فیلدای دلخواهت از جداول بساز و شرط where تو کوئری رو اینجا استفاده کن
misagh1370
پنج شنبه 03 مرداد 1392, 02:01 صبح
دوست عزیز ممنون از راهنماییت.
misagh1370
پنج شنبه 03 مرداد 1392, 16:56 عصر
دوست گرامی این کد رو نوشتم اما خطا میده
یه سوال داشتم :شما چطور دیتاست رو به کریستال اضاف کردین من فقط بلدم جداول رو مستقیم به کرستال اضاف کنم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.