PDA

View Full Version : سوال: گزارش گیری با stimul soft



saber_ershadi
یک شنبه 19 آذر 1391, 18:11 عصر
سلام خدمت دوستان عزیز
یه مشکل دارم میرم سر اصل مطلب
برنامه ثبت اطلاعات دانش آموز رو طراحی کردم بعد از انتخاب واحد و ثبت نمره میام از نمرات ثبت شده یه کارنامه میسازم که حالا می خوام یه تغییراتی تو قسمت کارنامه بدم که نتونستم این کار رو انجام بدم

http://www.kooshahootan.com/untitled.bmp

موضوع از این قراره که مثلا یه دانش آموز تو 1 ماه 4 تا نمره ریاضی داره میشه با حذف کلید های اصلی جدول نمره هر چندتا نمره برای هر کس ثبت کرد و زمان نمایش تعداد نمایش ها زیاد میشه مثلا بالا 4 بار ریاضی و نرات و تعداد واحد رو نمایش میده بعلاوه درس و نمرات دیگه.
می خوام طوری بشه که موقع چاپ مثل بالا باشه ولی با این تفاوت که 4 تا نمره دانش آموز رو ایطور نمایش بده یه بار اسم درس و تعداد واحد و 4 تا نمره جلوش ثبت بشه اینطوری:
ریاضی | 3 | 14.75 | 16 | 13.25 | 15 |

مهم نمایش درست نو خروجیه تو دیتاگرید به هر شکلی شد اشکال نداره
ممنون میشم منو راهنمایی کنید.

morteza271
یک شنبه 19 آذر 1391, 19:01 عصر
سلام.
شما باید کوئری که نمرات دانش آموز رو از دیتابیس میخونه و به گزارش میفرسته رو اصلاح کنید.
باید کوئری رو به صورتی تغییر بدین که هر درس رو یک مرتبه انتخاب کنه و نمرات اون درس رو طبق فرمتی که میخواین براتون برگردونه.
به نظرم بهتره یه تابع در sql بسازید و ازش استفاده کنید و در داخل اون تابع میتونید با استفاده از کرسر ها نمرات یک درس رو طبق فرمت دلخواه برگردونید.

اگه نتونستید اینکار رو بکنید بگین تا یه کوئری نمونه براتون بذارم.
موفق باشید

saber_ershadi
یک شنبه 19 آذر 1391, 19:41 عصر
خواستم با group by این کار رو بکنم ولی نشد گیج شدم چطور باید انجامش بدم بعد انجامش چطور تو خروجی StimulSoft این کار رو بکنم

سورسم رو گذاشتم اگه میشه یه نگاه بهش بندازید


http://www.kooshahootan.com/RegStudent2With(Print,sms,sql) (http://www.kooshahootan.com/RegStudent2With%28Print,sms,sql%29.zip).zip

پسون پوشه 7z ه که بعد از دانلود دوباره برگردونید ازzip به 7z

morteza271
یک شنبه 19 آذر 1391, 20:58 عصر
من پروژتون رو دیدم ولی من که نمیتونم اون قسمت مورد نظر شما رو پیدا کنم و درست کنم...

من نمیدونم شما چطوری دیتا رو به گزارش میفرستین ولی با روشی که گفتم میتونید اینکار رو انجام بدین.
شما چطوری دیتا رو از دیتابیس میخونید و به گزارش انتقال می دین؟؟

saber_ershadi
یک شنبه 19 آذر 1391, 21:38 عصر
قسمت هایی که باید روش کار بشه فکر کنم قسمن نمره و کارنامه باشه
از تابع show_karnameتو کلاس newST برای درج مشخصات دانش آموز و معدلش تو دیتا گرید اول و
از تابع show_nomre تو کلاس sabtNOMRE برای نمایش درس،واحد و نمره در دیتا گرید دوم استفاده میکنم
و برای فرستادنش به Stimulsoft هم از کد زیر:

newST fk = new newST();
fk.stcode = stcode_karname.Text;

sabtenomre1 fs = new sabtenomre1();
fs.stcode = stcode_karname.Text;

DataView objview;
objview = new DataView(fk.show_karname());

DataView objview2;
objview2 = new DataView(fs.Show_nomre());

Stimulsoft.Report.StiReport stiReport2 = new Stimulsoft.Report.StiReport();
stiReport2.Load(System.Windows.Forms.Application.S tartupPath + "\\Karname.mrt");

stiReport2.RegData("viewKarname1", objview);
stiReport2.RegData("viewKarname2", objview2);

stiReport2.Compile();
// stiReport1.Design();
stiReport2.Show();

saber_ershadi
یک شنبه 19 آذر 1391, 22:15 عصر
میخوام عکس بالا بشه مثل این :

http://www.kooshahootan.com/untitled2.bmp

morteza271
یک شنبه 19 آذر 1391, 22:45 عصر
خوب اینطوری مثلا اگه برای درس ریاضی 5 یا بیشتر نمره ثبت شده باشه چطور میشه؟؟؟
من یه روشی میتونم بهتون بگم که به صورت زیر باشه :
مثلا برای ریاضی که 4 نمره به ترتیب 11 ، 12 ، 13 ، 14 ثبت شده بیاره :
ریاضی / 3 / 11 - 12- 13- 14

یعنی کل نمرات یک درس رو با یه خط فاضله جداکنه و در یه ستون نمایش بده.
اگه میخواین بگین تا بهتون بگم؟؟

saber_ershadi
یک شنبه 19 آذر 1391, 23:46 عصر
نمیشه تو 4 تا ستون باشه؟
اونوقت تو گرفتن معدل مشکلی درست نمیکنه؟

morteza271
دوشنبه 20 آذر 1391, 09:40 صبح
نمیشه تو 4 تا ستون باشه؟
شدن که میشه هیچ کار نشدنی نیست!
ولی گفتم که اگه مثلا برای درس ریاضی 5 نمره ثبت شده بود چی میشه؟؟؟!!!!


اونوقت تو گرفتن معدل مشکلی درست نمیکنه؟
در این روشی که مدنظرم هست نه واسه معدلگیری هم مشکلی پیش نمیاد و میشه خیلی راحت معدل رو هم حساب کرد...

saber_ershadi
دوشنبه 20 آذر 1391, 10:02 صبح
اگه تو چند تا ستون باشه نمایشش بهتره شما یه زحمت بکش با 4 تا مثال بزن حالا یا بیشتر از 4 تا میشه یا کمتر، مهم اینه که شاید دانش آموز از یه درس چندتا نمره داشته باشه مثل ریاضی
اگه ممکنه تو همین پروژه تغییرات رو انجام بدین تا ببینم. ممنون

morteza271
دوشنبه 20 آذر 1391, 10:13 صبح
الان که نمیتونم ولی اگه برسم حتما شب براتون میذارم.
البته من نمیتونم روی این پروژه کار کنم چون برخی از dllهاشو ندارم و خطا میده.
ولی من یه کوئری بهتون میدم که به جای کوئری که میفرستین به گزارش استفاده کنید و تغییرات لازم در گزارش رو هم بهتون میگم.
تا بعد...

saber_ershadi
دوشنبه 20 آذر 1391, 20:45 عصر
چند تا فایل ocx همراهش هست اونا رو add کن به ابزار پروژه حل میشه اگه هم نشد احتمالا واسه کمپوننت kylixsms باشه بگو نرم افزارو میدم احتمالا با رجیستر بشه کامپوننته

saber_ershadi
سه شنبه 21 آذر 1391, 20:46 عصر
دوستان دیگه هم اگه میتونن کمک کنن ممنون میشم

morteza271
سه شنبه 21 آذر 1391, 21:10 عصر
سلام.شرمنده من دیشب یه کاری پیش اومد نتونستم در این مورد فکر کنم...
ولی فکر کنم بتونید به صورت زیر بتونید کارتون رو راه بندازید :
یه تابع در sql بنویسید که با دریافت یک عدد از 1 تا 4 نمره ی مربوطه رو برگردونه. مثلا اگه ورودی 1 بود این تابع بگرده و نمره اول رو برگردونه، اگه 2 بود تابع بگرده و نمره دوم(در صورت وجود) برگردونه و ...
بعد در کوئری که لیست درسها و نمرات دانش آموز رو به گزارش میفرسته رو به صورتی تغییر بدین که داخلش 4 بار این تابع فراخوانی بشه و پارامتر ورودی تابع رو از 1 تا 4 بذارین.
بعد داخل گزارش رو به صورتی تغییر بدین که 4تا نمره رو از دیتاسورس توی دیتابایند نمایش بده...
اگه منظورمو متوجه نشدین بگین تا یه خورده وقت بذارم و یه تابع و کوئری رو براتون بذارم...
موفق باشید.

saber_ershadi
سه شنبه 21 آذر 1391, 21:30 عصر
دقیقا نمیدونم منظورتون چیه یا چطوری پیاده سازی میشه

میشه تا یه حدی کار رو پیش برد مثلا با برداشت کلید اصلی تو جدول ثبت نمره این امکان رو بدم که یه دانش آموز هر چندتا نمره از هر درسی که خواست داشته باشه.
این اطلاعات تو قسمت کارنامه تو دیتا گرید 2 نمایش داده میشه منتها میاد همون درس رو تکرار میکنه و نمره رو جلوش میزنه حالا دیگه مشکل ثبت چند نمره رو ندارم چطور میشه اطلاعات که با زدن دکمه چاپ به برنامه stimulsoft میره به همون شکلی که گفتم نمایش داده بشه یعنی به صورت سطری نام درس ، تعداد واحد ، نمره1،نمره2،نمره3 ........ نمایش داده بشه
بهتر بگم اگه این کار انجام نشه اطلاعات بصورت ستونی به همون تعداد چاپ میشه ولی باید تو یه سر نمایش داده بشه.

aslan
سه شنبه 21 آذر 1391, 21:32 عصر
سلام
دوست عزیز میتونید به یکی از روشهای زیر عمل کنید :
- در صورتیکه تعداد نمرات درسها ثابت باشد ( مثلا حداکثر 5 نمره برای هر درس )
اطلاعاتی که توسط fs.Show_nomre() به گزارش ارسال میشه هر ردیفش شامل نام درس - تعداد واحد درس - نمره 1 - نمره 2 - ... - نمره 5 باشه
که برای اینکار لازم است تغییراتی در fs.Show_nomre() بوجود بیاد یا متد دیگه ای بنویسید .......... برای اینکار میتونید دستور سلکت تونو طوری بنویسید که
هر سطرش شامل اطلاعات مورد نظر باشه ( مثلا استفاده از Pivot در Sql ) ...... و یا جدول اطلاعاتی و برنامه تون را طوری تغییر بدید که جدول مربوط به اطلاعات نمرات برای هر درس 5 فیلد نمره داشته باشه و در ورود اطلاعات هر نمره در فیلد مربوطه درج شود و در نهایت برای هر درس یک سطر به گزارش ارسال بشه .............. ویا میتونید ساختار فعلی جداول اطلاعاتی را حفظ کنید ( برای هر درس چند سطر ) و در واکشی اطلاعات از بانک و توسط مثلا DataReader جهت ارسال اطلاعات به datatable هر datarow شامل تمام نمرات هر درس باشه و ..............

- میتونید در استیمول از گزارش نوع CrossTab استفاده کنید
- ...

aslan
سه شنبه 21 آذر 1391, 21:34 عصر
سلام
دوست عزیز میتونید به یکی از روشهای زیر عمل کنید :
- در صورتیکه تعداد نمرات درسها ثابت باشد ( مثلا حداکثر 5 نمره برای هر درس )
اطلاعاتی که توسط fs.Show_nomre() به گزارش ارسال میشه هر ردیفش شامل نام درس - تعداد واحد درس - نمره 1 - نمره 2 - ... - نمره 5 باشه
که برای اینکار لازم است تغییراتی در fs.Show_nomre() بوجود بیاد یا متد دیگه ای بنویسید .......... برای اینکار میتونید دستور سلکت تونو طوری بنویسید که
هر سطرش شامل اطلاعات مورد نظر باشه ( مثلا استفاده از Pivot در Sql ) ...... و یا جدول اطلاعاتی و برنامه تون را طوری تغییر بدید که جدول مربوط به اطلاعات نمرات برای هر درس 5 فیلد نمره داشته باشه و در ورود اطلاعات هر نمره در فیلد مربوطه درج شود و در نهایت برای هر درس یک سطر به گزارش ارسال بشه .............. ویا میتونید ساختار فعلی جداول اطلاعاتی را حفظ کنید ( برای هر درس چند سطر ) و در واکشی اطلاعات از بانک و توسط مثلا DataReader جهت ارسال اطلاعات به datatable هر datarow شامل تمام نمرات هر درس باشه و ..............

- میتونید در استیمول از گزارش نوع CrossTab استفاده کنید
- ...

saber_ershadi
سه شنبه 21 آذر 1391, 21:44 عصر
خوبهمین قسمت آخرش رو بیشتر توضیح میدید که نمرات هر درس رو بفرستم که اسم درس فقط یه بار بیاد و cross Tab اطلاعاتو به صورت سطری نمایش میده بر عکس دیتا باند؟

aslan
سه شنبه 21 آذر 1391, 22:59 عصر
سلام
سعی کنین از روشهای دیگری بجز CrossTab استفاده کنید ( چون تنظیم آن بشکل کارنامه کمی سخت است !)
بهر حال فایل ضمیمه بعنوان نمونه میباشد ( با CrossTab)
مجبور شدم در فایل StudentDb.accdb قبلی تون تغییراتی اعمال کنم . که شما میتونین به میل خودتون هم تغییرات لازمو اعمال کنید . در صورتیکه بخواهید این شکل گزارشو مبنای کار قرار دهید مجبورید در ورود اطلاعات تغییرات لازم را انجام دهید
برای دیدن گزارش اصلاحات لازم را در مورد مسیر فایل StudentDb.accdb برای DataSource گزارش اعمال کنید

saber_ershadi
چهارشنبه 22 آذر 1391, 22:41 عصر
ممنون مهندس انجام دادم حرف شما درسته تنظیمش به شکل کارنامه سخته و نتونستم انجامش بدم و این کار مشکلاتی داشت که اینا بودن :معدل گیری فقط رو یه درس انجام میشه یعنی نمیشه از کل نمرات درسها معدل گرفت؟ و بعدی اینکه چون به بانک متصله تمام نمرات ثبت شده رو نشون میده یعنی اومدیم واسه علی انتخاب واحد کردیم و نمره دادیم و واسه رضا هم این کار رو کردیم ولی میخوایم برا خروجی اطلاعات یه نفر رو چاپ کنیم ولی تو این روش درس و نمرات همه دانش آموزان تو خروجی نمایش داده میشه.
نمیشه طوری کرد که اطلاعات فقط دیتا گرید رو به خروجی فرستاد مثل دیتا باند چون تو Cross Tab این کار رو نتونستم انجام بدم چون باید به بانک متصل بود و فیلد ها رو نمایش داد تا بشه رو اونها کار کرد.
روش دیگه ای هست به جز cross Tab که بشه این کار رو کرد؟ یا همین Cross Tab رو میشه تغییر داد؟
باز هم ممنون از این که وقت میزارین

aslan
چهارشنبه 22 آذر 1391, 23:29 عصر
ممنون مهندس انجام دادم حرف شما درسته تنظیمش به شکل کارنامه سخته و نتونستم انجامش بدم و این کار مشکلاتی داشت که اینا بودن :معدل گیری فقط رو یه درس انجام میشه یعنی نمیشه از کل نمرات درسها معدل گرفت؟ و بعدی اینکه چون به بانک متصله تمام نمرات ثبت شده رو نشون میده یعنی اومدیم واسه علی انتخاب واحد کردیم و نمره دادیم و واسه رضا هم این کار رو کردیم ولی میخوایم برا خروجی اطلاعات یه نفر رو چاپ کنیم ولی تو این روش درس و نمرات همه دانش آموزان تو خروجی نمایش داده میشه.
نمیشه طوری کرد که اطلاعات فقط دیتا گرید رو به خروجی فرستاد مثل دیتا باند چون تو Cross Tab این کار رو نتونستم انجام بدم چون باید به بانک متصل بود و فیلد ها رو نمایش داد تا بشه رو اونها کار کرد.
روش دیگه ای هست به جز cross Tab که بشه این کار رو کرد؟ یا همین Cross Tab رو میشه تغییر داد؟
باز هم ممنون از این که وقت میزارین

سلام
همه اینایی که (بعنوان مشکل) فرمودین در این گزارش قابل انجامه ( مشکلات حل میشه )
ولی بشکل کارنامه درآوردنش یه کم سخته ( دقت کنین : گفتم سخته نه غیر ممکن ) -
روشهای دیگه ای که در پستهای قبلی گفتم بنظرم آسا نتر از گزارش CrossTab باشه
در صورتیکه اصرار به استفاده از CrossTab دارین بگین تا روشهای حل مشکلات اعلامی را بگم

saber_ershadi
شنبه 25 آذر 1391, 19:37 عصر
رفتم سراغش یه راه دیگه که گفتین به طور ثابت برای نمرات چند فیلد در نظر بگیرم اومدم عمیلایت های مختلف رو روش انجام دادم حالا موند گرفتن معدل که نتونستم این کدی که درست کردم برای گرفتن معدل

SELECT newST.STname, newST.STfamily, newST.STCmelli, paye.STpaye, sabtNOMRE.STcode, sabtNOMRE.sal,
SUM((sabtNOMRE.nomre + sabtNOMRE.nomre2 + sabtNOMRE.nomre3 + sabtNOMRE.nomre4) * newDARS.vahed) / 12 AS معدل
FROM newDARS INNER JOIN
paye ON newDARS.idstpaye = paye.idstpaye INNER JOIN
sabtNOMRE ON newDARS.COname = sabtNOMRE.COname INNER JOIN
newST ON sabtNOMRE.STcode = newST.STcode
GROUP BY newST.STfamily, newST.STCmelli, paye.STpaye, newST.STname, sabtNOMRE.STcode, sabtNOMRE.sal
HAVING (sabtNOMRE.STcode = @stcode)

تو دستور select دقت کنین نوشتم درس ها با هم جمع بشن بعد ضرب در تعداد واحد اون درس بعد باید تقسیم بر کل تعداد واحد درس ها بشن که تو بالا 4 تا درس ریاضی با تعداد واحد 3 تاشیم که کلا شد 12 واحد ولی نمیتونم جای این 12 دستور SUM(sabtNOMRE.vahed)f رو بزرام تا خودش تعداد واحد رو جمع کنه
باید چیکار کنم؟

saber_ershadi
یک شنبه 26 آذر 1391, 12:02 عصر
اگه این کار درست انجام بشه فقط یه درس رو درست انجام میده واگه تعداد درس ها و نمرات بیشتر بشه بازم مشکل درست نمیکنه ؟
ممنون میشم کد SQL بالا رو یه نگاهی بهش بندازید

aslan
یک شنبه 26 آذر 1391, 14:34 عصر
سلام
بنظرم ساده ترین راه ارسال اطلاعات دانش آموز به Stimul ,و انجام بقیه کارها در گزارش میباشد

بعنوان نمونه فایل ضمیمه را ببینید

saber_ershadi
یک شنبه 26 آذر 1391, 16:06 عصر
ممنون مهندس از cross tab بهتر شد ولی بازم یه جاهایش گیر میده مثلا من بیام واسه یه نفر دیگه نمره بدم بازم میاد نمره کسه دیگه رو تو نمرات صابر ارشادی تو خروجی نشون میده فکر کنم واسه این باشه که دیتا سورس فایل stimulsoft به بانک وصل و به جای اینکه بیاد اطلاعات رو از دیتا گرید بگیره میاد از خود بانک میگیره و هر چی خودش خواست نشون میده.مثلا اگه دیتا گرید خالی هم باشه چاپ رو که بزنی بازم اطلاعات صابر ارشادی نشون داده میشه. و تعداد واحد درس ها هم درست نیست اینم یه گیر دیگست.

نمیشه همون کد SQL بالا رو که گفتم ردیفش کرد؟اون تایپیک رو خوندین ؟

aslan
یک شنبه 26 آذر 1391, 17:08 عصر
ممنون مهندس از cross tab بهتر شد ولی بازم یه جاهایش گیر میده مثلا من بیام واسه یه نفر دیگه نمره بدم بازم میاد نمره کسه دیگه رو تو نمرات صابر ارشادی تو خروجی نشون میده فکر کنم واسه این باشه که دیتا سورس فایل stimulsoft به بانک وصل و به جای اینکه بیاد اطلاعات رو از دیتا گرید بگیره میاد از خود بانک میگیره و هر چی خودش خواست نشون میده.مثلا اگه دیتا گرید خالی هم باشه چاپ رو که بزنی بازم اطلاعات صابر ارشادی نشون داده میشه. و تعداد واحد درس ها هم درست نیست اینم یه گیر دیگست.

نمیشه همون کد SQL بالا رو که گفتم ردیفش کرد؟اون تایپیک رو خوندین ؟

سلام
درسته - فایل ضمیمه مستقیم به بانک اطلاعاتی وصل است
روش کار به این صورت باید باشد :

اطلاعات فردی دانش آموز را در گرید نمایش میدهید
با کلیک بر روی گرید شناسه دانش آموز را بدست میارید
اطلاعات مورد نیاز از دانش آموز را با Select از بانک و با شرط Id دانش آموز بدست میارید ( توسط متدی که مینویسید فقط اطلاعات یک دانش آموز را )
اطلاعات بدست آمده را به گزارش ارسال می کنید
و ............. تمام
در صورتیکه مراحل و درست انجام دهید نباید در گزارش اشکالی وجود داشته باشد
این گزارش برای دانش آموزانی که کمتر از 4 نمره دارند نیز جوابگو است ..........
پیشهنادم اینه که همینو مبنای عمل قرار دهید و.....
اما در مورد Query شما : من دقیق متوجه نشدم هدف از این Query بدست آوردن معدل کلی دانش آموزه یا معدل ( میانگین ) نمرات یک درس مشخص
اگر یک درس کمتر از 4 نمره داشت نحوه عمل چه جوری خواهد بود
.......

بهر حال پیاده سازی روشی که من گفتم راحتتر خواهد بود ( در واقع گزارش آماده است و باید اطلاعاتو براش بفرستین و گزارشو ببینین . همین )

saber_ershadi
چهارشنبه 20 دی 1391, 11:50 صبح
ممنون از شما دوست عزیز aslan هر چی کلکل میکنم به نتیجه نمیرسم
من که دیگه گیج شدم:گیج: کسی میتونه این کار رو انجام بده و آپلود کنه ممنون میشم

aslan
چهارشنبه 20 دی 1391, 19:16 عصر
سلام

در پست شماره 26 و پستهای قبلش که همه چیزو توضیح دادم .
برای پیاده کردنش کجاشو مشکل دارین ؟

saber_ershadi
چهارشنبه 20 دی 1391, 20:37 عصر
وقتی میخوام اطلاعاتو بفرستم از دیتا گرید اون فیلد تعداد که بود اون مقدار دهی نمیشه ولی اگه دیتا سورس فایل استیمال مستقیم وصل بشه فیلد تعداد تو فایل گزارش مقدار میگیره ولی میخوایم که اطلاعات از دیتا گرید بره شایدم این کار از من ساخته نیست.پروژه رو دوباره میزارم لطفا دوباره یه نگاه کنید.

RegStudent3With(Print,sms,sql).zip (http://www.kooshahootan.com/RegStudent3With(Print,sms,sql).zip)

aslan
چهارشنبه 20 دی 1391, 22:24 عصر
سلام
راستش من فکر میکردم خیلی وقتا پیش مشکلتون حل شده
با توجه به اینکه از طرح موضوع مدتها گذشته الان دقیقا نمیدونم که شما مشکلتون چیه؟ - چون پروژه تونو دوباره دیدم و کارنامه بر اساس اطلاعات موجود در بانک تهیه میشه.( قبلا مشکلتون تهیه کارنامه بشکل دلخواهتون بود اگه اشتباه نکرده باشم )
خواهشا مشکلتونو به ریز و به ترتیب و در صورت امکان با تصویر تشریح کنید (و همچنین انتظاراتی که از گرید یا گزارش دارین) تا در صورتیکه بتونیم ( من یا سایر دوستان ) کمکتون کنیم .

saber_ershadi
پنج شنبه 21 دی 1391, 12:06 عصر
خوب من یه گزارشی برای کارنامه آماده کرده بودم که تو اون میومدم اطلاعات دو تا دیتا گرید(یکی برای مشخصات دانش آموز و معدلش و یکی دیکه برای نام درس تعداد واحد و نمره اون درس) رو میفرستادم به فایل گزارش و خروجی چاپ آماده میشد ولی اشکال داشت چون دیگه نمی خواستم یه دانش آموز فقط یه نمره داشته باشه عکسی که تو پست 1 بود من این کارو کرده بودم حالا میخوام یه دانش آموز تو طول یه ترم چند (3 تا 4 )تا نمره ریاضی داشته باشه و بشه از اونا معدل گیری کرد یه مشکلی که درست شده بود این بود که اگه می خواستم چند بار نمره رو ثبت کنم و به خروجی برای گزارش بفرستم نمرات تکراری دروس زیر هم میومدن و طاهر زیبایی نداره میخواستم جوری بشه که اسم درس تعداد واحد و سپس نمرات اون درس حالا هر چند تا مثلا 4 تا یا یه درس دیگه 2 تا نمره تو خروجی نشون داده بشه مثل پست شماره 6 و شما اومدی یه فیلد نوبت گذاشتی تو بانک و چند تا درس یه نام با نمرات مختلف رو دخیره کردی و برای خروجی هم یه فیلد تعداد گذاشتی تو فایل گزارش (Stimulsoft) که تعداد درس ها رو شمارش میکنه حالا چطورش رو نفهمیدم بعد کار معدل گرفتن رو با تعداد درس ها،نمراتو جمع تعداد واحد انجام دادین با Cross Tab این کار رو انجام دادین ولی به شکل کارنامه در آموردنش سخت بود ولی اومدین هین کار رو تو پست شماره 24 که زدین انجام دادین فقط بدیش این بود که مستقیم به بانک وصل بود و اگه کسه دیگه هم تو هر درسی نمره داشت برا اون دانش آموزی که تو خروجی میدیدیم میومد مثلا داریم از علی پرینت میگیریم و اگه رضا هم نمره داشت نمرش تو نمره علی میومد خوبیش این بو که اون فیلدتعداد برای معدل گرفتن مقدار میگرفت ،حالا باید جوری بشه که مقدار رو بجای اینکه مسقیم از دیتا بیس بگیره بیاد از دیتا گرید بگیره و تو این روش نتونستم کاری کنم که فیلد تعداد مقدار بگیره و تعداد نمرات هر درس رو برای گرفتن معدل بشماره .آخرین کاری کردم این بود که اومدم به طور ثابت برای هر دانش آموز برای ثبت نمره 4 تا فیلد برای درج نمره گذاشتم که تو این روش برای گرفتن معدل مشکل پیدا کردم ،اون روشی قبلی تو پست 24 خوب بود منتها مشکل اتصال مستقیم به دیتا بیس بود حالا پروژه رو گذاشتم لطفا اگه ممکنه تغییرات رو تو اون انجام بدین من که نتونستم.
ممنون

aslan
پنج شنبه 21 دی 1391, 15:54 عصر
سلام
دوست عزیز ممنون که همه چیزو از اول یادآوری کردین
لطفا به موارد زیر توجه کنین :

- در ثبت نمرات دانش آموز فقط یک نمره در دیتابیس ذخیره میشود که باید اصلاح شود .

این بود که مستقیم به بانک وصل بود و اگه کسه دیگه هم تو هر درسی نمره داشت برا اون دانش آموزی که تو خروجی میدیدیم میومد مثلا داریم از علی پرینت میگیریم و اگه رضا هم نمره داشت نمرش تو نمره علی میومد خوبیش این بو که اون فیلدتعداد برای معدل گرفتن مقدار میگرفت ،حالا باید جوری بشه که مقدار رو بجای اینکه مسقیم از دیتا بیس بگیره بیاد از دیتا گرید بگیره
روش بهینه بنظر من همون روشی است که در پستهای قبلی توضیح داده ام:
انتخاب دانش آموز از گرید
دریافت اطلاعات دانش آموز ( اطلاعات ثابت / نمرات و ... ) انتخاب شده از بانک اطلاعاتی و ارسال آن به گزارش
انجام عملیات معدل گیری و .... در گزارش
و ....

اگه کسه دیگه هم تو هر درسی نمره داشت برا اون دانش آموزی که تو خروجی میدیدیم میومد مثلا داریم از علی پرینت میگیریم و اگه رضا هم نمره داشت نمرش تو نمره علی میومد
مطمئنین همچین اتفاقی میوفتد ؟؟؟؟
این عکسها را که ضمیمه میکنم و ببینید . برنامه ظاهرا همچین خطایی نداره !
لطفا دوباره بررسی کنید.

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

saber_ershadi
پنج شنبه 21 دی 1391, 17:50 عصر
درسته تو گرفتن معدل مشکل داره همونطوری خودت گفته بودی اگه تعداد نمره کمتر از 4 تا باشه(1 یا 2 یا 3 نمره در درس) اون فیلد هایی که خالی باشه رو 0 در نظر میگیره و این صفر رو تو معدل تاثیر میده تو اون فایل که تو پست شماره 24 دادین یه فیلد تعداد بود که تعداد نمراتی که ثبت شده بود رو شمارش میکرد ولی تو این کار آخری که کردم و شما عکش رو گذاشتی نمیتونم این کار رو بکنم از راه شما که گفته بودین تو پست 24 رو میتونین تو برنامه پیاده کنین؟با این روش که من رفتم فکر نکنم به جواب برسم

aslan
پنج شنبه 21 دی 1391, 18:35 عصر
نمونه کارنامه ای که من در پست 24 گذاشتم معدلش درسته ؟

saber_ershadi
پنج شنبه 21 دی 1391, 18:57 عصر
آره درسته فقط مستقیم به بانک وصله و همین باعث میشه وقتی تو برنامه ازش استفاده میکنم همونطوری که گفتم نمرات کسه دیگه رو هم میاره یا شاید منم تو ارسال اطلاعات یا جای دیگه اشتباه کردم که بیخیال شده بودم و اینی رو که آپلود کردم رو درست کردم که 4 نمره رو بطور ثابت میگیره حالا شما میتونی تغییرات رو مثل پست 24 تو برنامه انجام بدی؟
اگه هم وقت حذف 4 تا تکست باکس نمره با عملیات های اون رو نارید من تغییرات(حدف اونها) انجام بدم و پروژه رو دوباره ضمیمه کنم؟

aslan
پنج شنبه 21 دی 1391, 20:24 عصر
فایل گزارش کارنامه را دستکاری کردم . این فایل و بجای فایل خودتون کپی کنید.
در فایل گزارش یک Variable برای نگهداری جمع نمرات ایجاد کرده ام
در فایل گزارش به تغییرات صورت گرفته در ارتباط با event های (بخصوص After Print) تکست باکس های نمرات و .... دقت کنید


فقط مستقیم به بانک وصله و همین باعث میشه وقتی تو برنامه ازش استفاده میکنم همونطوری که گفتم نمرات کسه دیگه رو هم میاره یا شاید منم تو ارسال اطلاعات یا جای دیگه اشتباه کردم
!!!!!!!!!!!!! منظورتون چیه ؟؟؟ من عکس های پست های قبل و با نرم افزار خودتون گزارش گرفتم . می بینین که فقط نمرات فرد انتخاب شده را در گزارش آورده ........... فکر میکنم جایی را اشتباه میکنین ..........

saber_ershadi
پنج شنبه 21 دی 1391, 21:40 عصر
ممنون دوست عزیز
بازم ممنون از تذکر تو After print نمیدونستم تعداد به این مقدار میگیره
چرا رویداد after print درس تعداد رو صفر در نظر گرفتی؟ مگهتو خودش فیلد که این کار رو کردی کافی نبود؟

aslan
پنج شنبه 21 دی 1391, 22:31 عصر
ممنون دوست عزیز
بازم ممنون از تذکر تو After print نمیدونستم تعداد به این مقدار میگیره
چرا رویداد after print درس تعداد رو صفر در نظر گرفتی؟ مگهتو خودش فیلد که این کار رو کردی کافی نبود؟
برای اینکه برای هر ردیف ( درس ) تعداد از صفر شروع بشه .