PDA

View Full Version : گزارش گیری برای کارنامه ها



میلاد قاضی پور
شنبه 06 شهریور 1389, 15:28 عصر
سلام . من یک فرم دارم که توش لیست دانشجویان قرار داره . میخوام با انتخاب دانشجویان مورد نظر و زدن دکمه چاپ در ریپورت ویوور برای هر دانشجو کارنامه جدا چاپ بشه .فعلا از نحوه انتخاب دانشجویان صرف نظر میکنیم . مشکل اصلی اینه که اگر همه دانشجویان مطابق کدی که نوشتم هم سلکت بشن باز فقط یه صفحه کارنامه نشون میده نه اینکه به ازای همه دانشجویان کارنامه مجزا نشون بده .

http://up.iranblog.com/Files3/01bcfa5d97644e439a4f.png


این کدی که باهاش از فرم لیست دانشجویان وارد ریپورت ویوور میشیم :


Form12_reportViewer f12 = new Form12_reportViewer();
f12.ReportName = new Reports.Report_karnameh();

f12.Show();


این کدی که توی ریپورت ویوور نوشتم .





//پراپرتی جهت دریافت گزارش مورد نظر
ReportDocument repname;
public ReportDocument ReportName
{
get { return repname; }
set { repname = value; }
}



private void crystalReportViewer1_Load(object sender, EventArgs e)
{
universityDataSet dataset = new universityDataSet();
rwd.adapt = new SqlDataAdapter("", rwd.connection);


rwd.adapt.SelectCommand.CommandText = "select * from karnamereport";
rwd.adapt.Fill(dataset, "karnamereport");

rwd.adapt.SelectCommand.CommandText = "select * from karnameha";
rwd.adapt.Fill(dataset, "karnameha");

rwd.adapt.SelectCommand.CommandText = "select * from lessons";
rwd.adapt.Fill(dataset, "lessons");

repname.SetDataSource(dataset);
crystalReportViewer1.ReportSource = repname;
}



اینم تصویری از ریلیشنهای دیتابیس اکسپرت موجود در گزارشها

http://up.iranblog.com/Files3/a38d97860c7343ea807f.gif


اینم تصویری از نتیجه :

http://up.iranblog.com/Files3/a81a2b9dffd04042beed.jpg

فقط یک صفحه هست . مشکل دیگه اینه که درسای بقیه دانشجویان رو هم توی کارنامه همین یارو نشون میده . :(

حجتی نیا
شنبه 06 شهریور 1389, 15:49 عصر
در کریستال تو بخش detail (طراحی کارنامه در این بخش باید باشه)کلیک راست و section expert و new page before رو فعال کن . این باعث میشه که اطلاعات هرکدوم در صفحه جدید چاپ بشه ..
اگه اینکار جواب نداد، بعدش رو کدهات کار میکنیم ..

میلاد قاضی پور
شنبه 06 شهریور 1389, 17:30 عصر
به به جناب حجتی نیا متخصص گزارش گیری اون دفعه هم که فقط شما بودی کمک کردی در این مورد دستت درد نکنه . اما اینطوری برای هر درس صفحه جدا گانه ایجاد میکنه .

حجتی نیا
شنبه 06 شهریور 1389, 23:47 عصر
اون چیزی که مشخصه ایراد از نحوه ارتباط جداول شما در کریستال هست ..
یکمی راجع به فیلدها تو جداول توضیح میدین که چه چیزی توشون ذخیره میشه؟؟
مثه id تو lesson و karnameha __ و scode در karnamehaو karnamereport

میلاد قاضی پور
دوشنبه 08 شهریور 1389, 13:18 عصر
بابت تأخیر معذرت . فکر کردم دیگه جوابی به این تاپیک داده نمیشه .
آی دی کلید اصلی هست همه جا . اسکود کد دانشجویی هست که در برخی جداول کلید اصلی هست .

ببینید :لیست دانشجویان از karnamereport استخراج میشه . پس من میخوام به تعداد تمام دانشجویان موجود در اون صفحات گزارش داشته باشم . تا اینجا مشکلی نیست و این اتفاق میفته .
حالا میخوام در قسمت دیتیل دانشجویانی که در هر صفحه اسمشون هست ، نمراتشون از تیبل کارنامه استخراج بشه.این اتفاق هم میفته اما... به جای اینکه نمرات اختصاصی هر دانشجو استخراج بشه نمرات تمام دانشجویان از تیبل کارنامه در میاد و در قسمت دیتیل دانشجوی اول قرار میگیره .

حجتی نیا
دوشنبه 08 شهریور 1389, 15:17 عصر
این مشکل مربوط به ارتباط کلیدهای اصلی در جداول هستند . درعکسی که از ارتباط جداول گذاشتید، دربخش auto-link میبینید که گزینه by key فعاله و این یعنی اینکه الان scodeدرجدول karnamereport با id در karname در ارتباطه درحالیکه این دو کلید دارای مقادیر متفاوت هستند..
واسه حلش در auto-link گزینه by name رو فعال کنید تا ارتباط بین کلیدهای هم محتوا برقرار بشه . درضمن احتمالا ارتباط های اضافی هم بوجود میاد چون مثلا در دوجدول فیلدterm دارین و این ارتباطات باید حذف بشن که در همون صفحه اینکار امکان پذیره..

میلاد قاضی پور
دوشنبه 08 شهریور 1389, 17:24 عصر
نشد . نوع ریلیشنهارو روی کسکید هم تغییر میدم بازم نمیشه .

حجتی نیا
دوشنبه 08 شهریور 1389, 18:10 عصر
نشد . نوع ریلیشنهارو روی کسکید هم تغییر میدم بازم نمیشه .
چی نشد؟؟؟ یه عکس ار ریلیشن های جدید بزارین
نحوه ارتباط جداول چطوریه؟؟(یک به یک ،یک به چند ...):متفکر:

میلاد قاضی پور
دوشنبه 08 شهریور 1389, 19:57 عصر
http://up.iranblog.com/Files3/e427a458c1e945d8869a.jpg

ببینید آقای حجتی نیا وقتی روی بای نیم ست میکنم بعد از اوکی دوباره نگاه میکنم میبینم رفته روی بای کی. پاک کردم از دوباره هم این کارو کردم باز میره روی بای کی.کل پروژه رو میخواین آپلود کنم ؟ 9 مگ هست با دیتابیساش.

حجتی نیا
دوشنبه 08 شهریور 1389, 23:55 عصر
کل پروژه رو میخواین آپلود کنم ؟
اگه امکانش هست ..

میلاد قاضی پور
سه شنبه 09 شهریور 1389, 01:00 صبح
در این تاپیک (http://barnamenevis.org/forum/showthread.php?t=240390&page=3) با عنوان نسخه 2 (پست موجود در صفحه سوم تاپیک) ضمیمه شد . لطفا اگه تونستید ایرادش رو برطرف کنید توضیحات رو اینجا ارائه کنید اما خود برنامه رو با عنوان نسخه 3 در همون تاپیک برای دانلود قرار بدید .

حجتی نیا
شنبه 13 شهریور 1389, 23:42 عصر
سلام آقای حجتی نیا . خوب هستید ؟ آقا توضیحاتی که در مورد ایراد موجود در گزارش گیری کارنامه ها بود رو دوباره میفرمائید چون....
همونطور که گفته بودم مشکل در نحوه ارتباط بین جداول بود .. در کریستال و در databaseexpect>link میشه رو لینک ها کلیک و گزینه link option رو انتخاب و در اونجا نحوه join جداول رو تعیین کرد که من اونو رو left outer join گذاشتم .. در کریستال بجای فیلد شماره دانشجویی، یک group parametr field بر مبنای karnamereport.scode تعریف کردم و جایگزین اون شد .. نتیجه اینکارا این میشه که به ازای هر دانشجو، درس های اون فقط چاپ میشه..
در زمان چاپ کارنامه،تعداد واحد بعضی از دروس نمایش داده نمیشه، علتش اینه که در جدول کارنامه ها اون درس ها در انتهاشون با یه فاصله ثبت میشه اما در جدول درس اینطور نیست و این باعث میشه که در هنگام ارتباط بین جداول، این مقادیر باهم مطابقت ندارند ..
بدلیل حجم بالای برنامه، فقط سه تاعکس از خروجی و فایل ریپورت کارنامه رو ضمیمه کردم و شما فقط این فایل ریپورت رو جایگزین قبلی کن و برنامه رو rebuild کن ..
http://www.4shared.com/file/49Snovoo/_2__Desktop.html

میلاد قاضی پور
یک شنبه 14 شهریور 1389, 00:22 صبح
در زمان چاپ کارنامه،تعداد واحد بعضی از دروس نمایش داده نمیشه، علتش اینه که در جدول کارنامه ها اون درس ها در انتهاشون با یه فاصله ثبت میشه اما در جدول درس اینطور نیست

من چک کردم . اینطور نبود . یعنی اسپیس ثبت نشده.

حجتی نیا
یک شنبه 14 شهریور 1389, 09:45 صبح
من چک کردم . اینطور نبود . یعنی اسپیس ثبت نشده.
یه دانشجوی جدید ثبت کن و انتخاب واحد کن براش، ببین اطلاعات درست چاپ میشه؟