# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ابزارهای گزارش سازی >  فرمول خاص برای محاسبه میانگین نمرات

## afshin62

با سلام
من میخوامبر اساس یه فرمول خاص میانگین نمرات کلاس رو حساب کنم. لطفاً‌راهنماییم کنید:

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

If {course.courseName}(i)={course.courseName}(i+1) then
GradeMax=max{grades.grade

و همچنین مثلاً‌ از لیست دروس نمره درس انضباط رو جدا کنم و با یه ضریب خاص برای میانگین ازش استفده کنم.

If {course.CourseName}="انضباط" then
enzebat={grades.grade}*0.5

و نهایتاً‌ و محاسبه میانگین این نمرات: بر اساس سایر نمرات دروس فرد 

Average=grademax+math2+otherGrades In recordes/recordsNum


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

با تشکر

----------


## sara.f

> با سلام
> من میخوامبر اساس یه فرمول خاص میانگین نمرات کلاس رو حساب کنم. لطفاً‌راهنماییم کنید:
> 
> من میخوام اول مشخص کنم که اگه یک فرد برای یک درس خاص 2 یا حتی 3 نمره داشت نمره حداکثر رو از این نمرات بگیره و فقط اون نمره رو توی برای پرینت نشون بده. یه چیزی شبیه این کد:
> 
> If {course.courseName}(i)={course.courseName}(i+1) then
> GradeMax=max{grades.grade
> 
> و همچنین مثلاً‌ از لیست دروس نمره درس انضباط رو جدا کنم و با یه ضریب خاص برای میانگین ازش استفده کنم.
> ...


سلام دوست عزیز
شما که خودت همه کدها را نوشتی! پس مشکلت چیه؟!

----------


## afshin62

نه این کاریه که من میخوام بکنم ولی این فرمولها در کریستال کاربردی نداره. 
من فقط میدونم دقیقاً‌ مشکلم اینه ولی نحوه کد کردنشو توی کریستال نمیدونم

لطفاً‌ هر گونه نظری دارید بگید شاید کمکی باشه 
با تشکر

----------


## mn_zandy63

سلام دوست عزیز

یک مقدار سوالتون مبهم بود، نمیتونم بهتون بگم دقیقا فلان کار رو انجام بدید. فقط چند تا نکته رو یادآوری میکنم شاید بتونه راهگشا باشه.
در کریستال ریپورت شما به رکوردهاتون داخل یک حلقه دسترسی ندارید. بنابراین نمیتونید یک حلقه بذارید و بگید فلان فیلد اندیس i.
باید به طریق دیگه ای مشکلتون رو حل کنید، ممکنه Running Total ها مقداری از مشکلاتتون رو حل کنند، به جز اون باید از فرمول ها استفاده کنید و ممکنه لازم باشه از Subreport ها هم استفاده کنید.

و یک سوال، خب چرا اصلا این معدل که گفتید رو داخل کدتون حساب نمیکنید بفرستید برای گزارش.

موفق باشید.

----------


## afshin62

دوست عزیز متشکرم 
ولی من نمیدونم چه جوری محاسبات برنامه رو بر اساس گروه بندی مورد نظر به کریستال بفرستم. مثلاً‌ وقتی یک کاربر میخواد کارنامه کل یک کلاس رو پرینت بگیره من باید کل معدل نفرات رو بر اساس کلاس محاسبه کنم و به گزارش بفرستم. 
توی همین گیرم  من میتونم مثلاً یک مقدار رو به گزارش بفرستم اونم توسط فیلد فرمول اما نمیدونم چه جوری کل نمرات یک گروه رو بفرستم.
اونی که من بلدم کدش در زیر نوشته شده:
CrRep.FormulaFields.GetItemByName("NameGD").Text = "'" & CmbNames.Text & "'"

----------


## mn_zandy63

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

اگه درست متوجه نشدم بیشتر توضیح بده.

----------

