PDA

View Full Version : نمایش اطلاعات چندین تیبل در یک گزارش crystalreport



unique1984
یک شنبه 06 بهمن 1387, 21:29 عصر
با سلام
من قصد دارم اطلاعات چند تیبل رو در قالب یک گزارش نشون بدم .
یک جدول اصلی وجود داره که یکی از فیلدهای اون کلید اصلی هستش ، به جز این جدول ، 5 جدول دیگه وجود داره که یکی از فیلدهای هر یک از این جداول کلید خارجی هست و به این جدول اصلی مرتبطه .
در واقع جدول اصلی به 5 جدول دیگه یک ارتباط 1 به 5 داره. اما 5 جدول دیگه هیچ گونه ارتباطی با هم ندارند.
حالا من می خوام اطلاعات این 6 جدول رو در قالب یک گزارش نشون بدم. البته قبل از نمایش گزارش ، یکسری عملیات فیلترینگ توسط کاربر روی اطلاعات این جداول انجام می گیره.
از اونجایی که 5 جدول فرعی با هم ارتباط ندارند نمی شه اونها رو با هم join کرد. و چنانچه join بشند اطلاعات تکراری و نا معقولی رو خواهیم داشت.
تنها راهی که به ذهن من میرسه اینه که 6 رشته کوئری بسازم یعنی 6 select جداگانه.
اما تا اونجایی که من کار کردم فقط یه رشته میتونستم به dataadaptor پاس بدم. حالا اگه قرار باشه من 6 تا select جداگانه رو به یه ریپورت بفرستم ، امکان پذیره؟
اصلا راهی داره؟
توضیحات: گزارش تحت وب ، زبان #c ،بانک sql . چون گزارش پویاست ، رشته دستوری sql رو خودم می سازم و از view یا storeprocedure استفاده نمی کنم.
امیدوارم منظورمو کامل رسونده باشم.
ممنون

unique1984
دوشنبه 07 بهمن 1387, 16:26 عصر
مشکلمو درست بیان نکردم یا راهی وجود نداره؟

mh19842008
چهارشنبه 09 بهمن 1387, 10:35 صبح
اگه خواسته باشی از هر جدول یک رکورد نشون بدی میتونی از ارسال پارامتر استفاده کنی
واگه میخوای از یکی چند رکورد و از دیگری یک رکورد میتونی از ویزارد ها استفاده کنی
بسته به میزان اطلاعات شما برای نمایش در ریپورت میتونه راهی هم وجود داشته باشه

unique1984
پنج شنبه 10 بهمن 1387, 21:49 عصر
ممنون دوست عزیز .
ببینید ارتباط بین جداول من بصورت زیر هستش و همونطوری که گفتم یک ارتباط 1 به 5 .
5 جدول هم هیچگونه ارتباطی به هم ندارند. هر جدول هم طبعا چندین فیلد داره. اگه من بخوام اطلاعات تمام فیلدهای این جداول رو در یک گزارش بیارم باید چیکار کنم؟
جدول اصلی از طریق کد ملی به سایر جداول ارتباط داره . فرش کنید فردی با کد ملی x سه رکورد در جدول1، دو رکورد در جدول2 ، 1 رکورد در جدول 3 و... داشته باشند.
من اطلاعات رو بر اساس کد ملی جدول اصلی گروه بندی کردم (در گزارش) . اطلاعاتی که در باند گروهبندی هستند همون اطلاعات اصلی مثل کد ملی ، نام ، نام خانوادگی و.. هستند. و اطلاعات 5 جدول دیگه باید زیر این گروه بندی نمایش داده بشند .
فرضا برای شخص با کد ملی x باید ابتدا سه رکورد جدول1،بعد 2 رکورد جدول 2و .. قرا بگیرند.
اطلاعات این 5 جدول باید در 5 subreport قرار بگیرند و ساب ریپورتا هم در یک این گزارش.
حالا قبل از نمایش گزارش باید روی این 6 جدول بشه عملیات فیلتر انجام داد.و بر اساس نتایج بدست اومده گزارش نشون داده بشه.
مشکل من اینه که چون نحوه ارتباط جدوال به صورت شکل ضمیمه شده هست ، چطور وقتی عملیات فیلترینگ انجام میشه نتایجو برای گزارش بفرستم. چون من نمی تونم یه رشته select تولید کنم (5 جدول فرعی که با هم ارتباطی ندارند!!!) مجبورم 6 تا رشته select بسازم و الان نمی دونم چطور 6 رشته به یه ریپورت بفرستم.
اگه بازم توضیحاتم نا مفهومه یه سمپل بذارم!!
اصلا شاید راه حل این نیست!!
خیلی ممنون میشم اگه راه حل اساسی رو بگین. اگه یه نمونه هم بذارین که خیلی خوب میشه. شدیدا نیاز دارم این مشکل حل بشه .

hasan_esfahan
جمعه 11 بهمن 1387, 15:22 عصر
salam dostya aziz ravesh hai ziadi ast ke man ba shesh haft ravesh kar kardam va fekr mikonam asan tain ravesh in bashad





using CrystalDecisions.CrystalReports.Engine;
ReportDocument repdoc = new ReportDocument();
string path = Directory.GetCurrentDirectory() + "\\Reports\\CrystalReport1.rpt";
repdoc.Load(path);
repdoc.DataDefinition.RecordSelectionFormula = "{table1.num}<=1000 and {table1.num}>=100 and {table2.name}='ali' and {table3.child}=3";
crystalReportViewer1.ReportSource = repdoc;