صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 56

نام تاپیک: رتبه بندی عملکرد در گزارش

  1. #1

    رتبه بندی عملکرد در گزارش

    سلام دوستان
    قبل از طرح سئوال عرض کنم که مورد درخواستی رو زیاد جستجو کردم ، ولی متاسفانه مطلب مد نظرم رو پیدا نکردم

    در فایل ضمیمه ، من یک گزارش عملکردی رو بر اساس توابع ( Dcount و DSum ) از بانک اطلاعاتی درست کردم و بر اساس فرمول درصد عملکرد رو در دو بخش ( عملکرد کل سنوات و عملکرد سال جاری ) رو در ستون عملکرد مربوط به خود محاسبه کردم

    حالا میخوام در ستون های ( رتبه عملکرد سنوات ) و ( رتبه عملکرد سال جاری ) رتبه هر ناحیه در ستون رتبه عملکرد در هر بخش مقابل خودش بر اساس یک عدد از ( 1 تا 6 ) درج بشه

    مثلا ( ناحیه وحدتیه : چون درصد عملکرد سنوات آن 120.83% ( رتبه اول ) است ، در ستون رتبه عملکرد سنوات عدد ( 1 ) درج شود و چون درصد عملکرد سال جاری آن 46.75% ( رتبه سوم ) است در ستون رتبه عملکرد سال جاری عدد ( 3 ) درج شود .

    ممنون و سپاسگزارم راهنمائی بفرمائید.
    فایل های ضمیمه فایل های ضمیمه

  2. #2

    نقل قول: رتبه بندی عملکرد در گزارش

    از دوستان کسی نیست ی راهنمائی کوچک هم بکنه ( خواهشا خیلی کارم گبر افتاده )

  3. #3
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    برنامه تون رو دیدم.

    اول اینکه نیازی نیست محاسبات رو hardcode کنین، بهتره اینکار رو بعهده کوئری ها بگذارین.
    محاسبه رتبه بندی رو هم خود کوئری ها میتونن براتون انجام بدن ولی قدری پیچیده است و نیاز به توضیح داره.
    در sql رتبه بندی راحت هست و در واقع تمهیداتش دیده شده ولی در اکسس نیاز هست خودمون انجام بدیم.
    فرصت کنم براتون کوئری ها رو مینویسم.
    شکل گزارش رو البته باید تغییر بدین و به کوئری ها bound کنین.

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

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    برای شروع، بخش عملکرد پروژه ها (کل سنوات) رو در نظر بگیرین.

    برای سادگی کار رو به مراحل کوچکتر میشکنیم و در آخر کنار هم قرار میدیم.

    اول یک کوئری ساده برای محاسبه پروژه های ابلاغ شده (EBLAGH_PROJECT) مینویسیم:
    SELECT NAHI , COUNT(NUMPRO) AS E
    FROM TBLSABT
    WHERE POL > 0
    GROUP BY NAHI


    و یک کوئری هم برای محاسبه پروژه های تغییر تحول شده (TAHVIL_PROJECT):
    SELECT NAHI , COUNT(NUMPRO) AS TTF
    FROM TBLSABT
    WHERE (POL > 0 AND EMTIAZ > 0)
    GROUP BY NAHI

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    حالا از روی این دو کوئری، کوئری محاسبه عملکرد پروژه ها (AMALKARD_PROJECT) رو مینویسیم:
    SELECT EP.NAHI , EP.E , TP.TTF , TP.TTF/EP.E AS X
    FROM EBLAGH_PROJECT EP INNER JOIN TAHVIL_PROJECT TP ON EP.NAHI = TP.NAHI

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    حالا رتبه رو روی خود همین کوئری عملکرد میتونیم محاسبه کنیم:
    SELECT A.NAHI , A.E , A.TTF , A.X , COUNT(*) AS ROTBEH
    FROM AMALKARD_PROJECT AS A
    LEFT JOIN AMALKARD_PROJECT AS B ON A.X <= B.X
    GROUP BY A.NAHI , A.E , A.TTF , A.X

  7. #7
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    فکر کنم همین بعنوان راهنمایی برای شما کافی باشه،تنها نیاز هست که مشابه همین رو برای اعتبارات بنویسین و برای شرط سال هم کافی هست در دو کوئری اول اون رو اضافه کنین.
    بعد دو گزارش جدا یکی برای پروژه ها و یکی هم برای اعتبارات طراحی میکنین.
    کوئری عملکرد سال رو با کوئری عملکرد کلی JOIN میکنین و بعنوان دیتاسورس گزارش عملکرد پروژه ها قرار میدین و مشابه همین برای اعتبارات.

  8. #8

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    فکر کنم همین بعنوان راهنمایی برای شما کافی باشه،تنها نیاز هست که مشابه همین رو برای اعتبارات بنویسین و برای شرط سال هم کافی هست در دو کوئری اول اون رو اضافه کنین.
    بعد دو گزارش جدا یکی برای پروژه ها و یکی هم برای اعتبارات طراحی میکنین.
    کوئری عملکرد سال رو با کوئری عملکرد کلی JOIN میکنین و بعنوان دیتاسورس گزارش عملکرد پروژه ها قرار میدین و مشابه همین برای اعتبارات.
    سلام و سپاس فراوان از توجه و وقتی که گذاشتید
    آقا خیلی عالی و دقیقا همونی که میخواستم فقط اینکه :
    من با استفاده از راهنمائی و کدهائی که نوشته بودید ، گزارش رتبه بندی درسال جاری رو نیز ساختم فقط با دو مسئله روبرو شدم
    1- مجبور شدم مقدار سال جاری رو به صورت ثابت ( 1399 ) در شرط Sql وارد کنم ، چطور میتونم مقدار این شرط ( سال ) رو مثل نمونه خودم مقدار 1399 رو با استفاده ازتابع Left از باکس 13991222=shamsi برگردونه و به عنوان شرط سال داخل کوئری قرار بده که نیاز به وارد کردن سال جاری و یا مقدار دهی ثابت در کوئری نباشیم

    2 - چطور میتونم هر دو گزارش کلیه سنوات و سال جاری رو کنار هم در یک گزارش نشون بدم ( شبیه گزارش نمونه ارسالی خودم )

    در ضمن تعداد نواحی که فرمودید ، همیشه ثابت و همین شش ناحیه است .
    بازم ممنون از توجه شما
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله iransim : جمعه 22 اسفند 1399 در 19:05 عصر

  9. #9
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

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

  10. #10

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام و روز خوش،
    خوشحالم جواب گرفتین.
    یک نمونه میگذارم و روی همون روش کار رو نشون میدم.
    سپاس فراوان از قبول زحمت

  11. #11
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

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

    1- در برنامه پیوست، بخش "اعتبار" نیومده ، چون ساختار کوئری ها دقیقا مشابه "تعداد پروژه" است و زحمتش به دوش استارتر محترم تاپیک گذاشته شد.
    2- به جز کوئری های محاسبه رتبه، محاسبه اعتبار رو میشه در همین کوئری ها ترکیب کرد که برای سادگی مطلب کنار گذاشته شده.
    3- روش محاسبه رتبه رو تغییر دادم (نسبت به اونچه که در پست 6 آمده) ، دلیلش رو بعنوان میگذارم که خودتون پیدا کنین.
    4- ارسال مقدار سال به کوئری های مربوط از طریق tempvar انجام میشه، میتونین از هر روش که مناسبتر دونستین انجام بدین.
    5- گزارش باید از طریق فرم بازبشه (برای انتخاب سال)، ولی اگر مستقیم هم باز بشه بصورت پیش فرض از آخرین (بزرگترین) مقدار سال استفاده میکنه.

  12. #12
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    SELECT A.NAHI, A.E, A.X, A.TTF, 
    (SELECT COUNT (*)+1 FROM (SELECT X FROM AMALKARD_PROJECT_KOL) AS B WHERE A.X<B.X) AS ROTBE
    FROM AMALKARD_PROJECT_KOL AS A
    ORDER BY A.NAHI;



    /* AMALKARD_PROJECT_KOL */
    SELECT EP.NAHI, EP.E, TP.TTF, TP.TTF/EP.E AS X
    FROM EBLAGH_PROJECT_KOL AS EP INNER JOIN TAHVIL_PROJECT_KOL AS TP ON EP.NAHI=TP.NAHI;


    /* TAHVIL_PROJECT_KOL */
    SELECT TblSabt.Nahi, Count(TblSabt.NumPro) AS TTF
    FROM TblSabt
    WHERE (((TblSabt.Pol)>0) AND ((TblSabt.Emtiaz)>0))
    GROUP BY TblSabt.Nahi;

  13. #13
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    نمونه خروجی

    1.PNG

  14. #14
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    برنامه نمونه:
    فایل های ضمیمه فایل های ضمیمه

  15. #15
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    سرفرصت روش رتبه بندی در SQL SERVER رو هم میگذارم تا ببینید چقدر کار راحتتر و کدها خواناتر هست.

  16. #16

    نقل قول: رتبه بندی عملکرد در گزارش

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

    1- در برنامه پیوست، بخش "اعتبار" نیومده ، چون ساختار کوئری ها دقیقا مشابه "تعداد پروژه" است و زحمتش به دوش استارتر محترم تاپیک گذاشته شد.
    2- به جز کوئری های محاسبه رتبه، محاسبه اعتبار رو میشه در همین کوئری ها ترکیب کرد که برای سادگی مطلب کنار گذاشته شده.
    3- روش محاسبه رتبه رو تغییر دادم (نسبت به اونچه که در پست 6 آمده) ، دلیلش رو بعنوان میگذارم که خودتون پیدا کنین.
    4- ارسال مقدار سال به کوئری های مربوط از طریق tempvar انجام میشه، میتونین از هر روش که مناسبتر دونستین انجام بدین.
    5- گزارش باید از طریق فرم بازبشه (برای انتخاب سال)، ولی اگر مستقیم هم باز بشه بصورت پیش فرض از آخرین (بزرگترین) مقدار سال استفاده میکنه.

    سلام و عرض ادب و تشکر بابت همه توجه و وقتی که برای این تاپیک گذاشتید
    خوشحالم میشم که این تاپیک بتونه با زحمت و صرف وقتی که شما تقبل کردید نکات جدید و آموزنده ای را به همه دوستان ارائه کند.
    آخرین ویرایش به وسیله iransim : یک شنبه 24 اسفند 1399 در 11:09 صبح

  17. #17

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سرفرصت روش رتبه بندی در SQL SERVER رو هم میگذارم تا ببینید چقدر کار راحتتر و کدها خواناتر هست.
    سلام و عرض ادب مجدد
    بی صبرانه منتظر قبول زحمت و دیدن نمونه کار و تجربه شما هستم

    منم فایل آخرین تغییرات رو که با استفاده از راهنمائی و نمونه شما پیاده کردم رو به پیوست میفرستم بخش اعتبارات رو نیز اضافه کردم البته با ی تغییر ( امید است به دوستان علاقه مند کمک کنه )
    درضمن من گزارش رتبه بندی قبلی خودم رو نیز اضافه کردم ( البته با ی تغییر که اضافه کردن ضریب وزنی است )
    هرچند به شما خیلی زحمت دادیم ولی ی سئوال
    آیا امکانش هست که از روش شما در گزارش ( عملکرد با اعمال ضریب وزنی ) : عملکرد رو در یک عدد ثابت ( ضریب وزنی ) که هر ناحیه ضریب وزنی خاص خودش رو داره ضرب کرد و بعد بر اساس مقدار جدید عملکرد که حاصل ( عملکرد * ضریب وزنی ) بدست میاد رتبه بندی رو انجام داد ؟
    فایل های ضمیمه فایل های ضمیمه

  18. #18
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط iransim مشاهده تاپیک
    سلام و عرض ادب مجدد
    بی صبرانه منتظر قبول زحمت و دیدن نمونه کار و تجربه شما هستم

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

  19. #19
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش SQL RANK

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سرفرصت روش رتبه بندی در SQL SERVER رو هم میگذارم تا ببینید چقدر کار راحتتر و کدها خواناتر هست.
    رتبه بندی در SQL با تابع RANK انجام میشه. همین جدول در SQL اگر بود میتونستیم به شکل زیر عمل کنیم:
    CREATE PROCEDURE [dbo].[Rank] @SAL int  AS
    BEGIN
    SET NOCOUNT ON;


    WITH EK AS ( /* PROJECTS EBLAGH KOL */
    SELECT NAHI,COUNT(NUMPRO) AS E FROM TblSabt WHERE POL>0 GROUP BY NAHI)
    ,
    ES AS ( /* PROJECTS EBLAGH SAL */
    SELECT NAHI,COUNT(NUMPRO) AS E FROM TblSabt WHERE (POL>0 AND SAL=@SAL) GROUP BY NAHI)
    ,
    PK AS ( /* PROJECTS TAHVIL KOL */
    SELECT NAHI,COUNT(NUMPRO) AS TTF FROM TblSabt WHERE (POL>0 AND EMTIAZ>0) GROUP BY NAHI)
    ,
    PS AS ( /* PROJECTS TAHVIL SAL */
    SELECT NAHI,COUNT(NUMPRO) AS TTF FROM TblSabt WHERE (POL>0 AND EMTIAZ>0 AND SAL=@SAL) GROUP BY NAHI)
    ,
    APK AS (/* AMALKARD PROJECT KOL */
    SELECT EK.NAHI,EK.E,PK.TTF,CAST([TTF] AS FLOAT)/CAST([E] AS float) AS X FROM PK INNER JOIN EK ON EK.NAHI=PK.NAHI)
    ,
    APS AS (/* AMALKARD PROJECT SAL */
    SELECT ES.NAHI,ES.E,PS.TTF,CAST([TTF] AS FLOAT)/CAST([E] AS float) AS X FROM PS INNER JOIN ES ON ES.NAHI=PS.NAHI)


    SELECT APK.NAHI , APK.E , APK.TTF , APK.X , APS.E , APS.TTF , APS.X,
    RANK() OVER (ORDER BY APK.X DESC) RK, /* ROTBE KOL */
    RANK() OVER (ORDER BY APS.X DESC) RS /* ROTBE SAL*/
    FROM APK INNER JOIN APS ON APK.NAHI=APS.NAHI
    ORDER BY APK.NAHI
    END
    GO

  20. #20
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش SQL RANK

    EXEC [dbo].[Rank] @SAL = 1398


    2.PNG

  21. #21

    نقل قول: رتبه بندی عملکرد در گزارش SQL RANK

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    EXEC [dbo].[Rank] @SAL = 1398


    2.PNG
    احسنت بر شما
    سعی میکنم بانک رو با ساختار SQL در بیارم ( البته تجربه ای ندارم ) و از روش شما در اون استفاده کنم

  22. #22

    نقل قول: رتبه بندی عملکرد در گزارش

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

  23. #23
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط iransim مشاهده تاپیک
    آیا امکانش هست که از روش شما در گزارش ( عملکرد با اعمال ضریب وزنی ) : عملکرد رو در یک عدد ثابت ( ضریب وزنی ) که هر ناحیه ضریب وزنی خاص خودش رو داره ضرب کرد و بعد بر اساس مقدار جدید عملکرد که حاصل ( عملکرد * ضریب وزنی ) بدست میاد رتبه بندی رو انجام داد ؟
    فرمولی که برای محاسبه عملکرد وزنی استفاده کردین مطمئنین درسته؟
    اگر همین باشه که دیدم، چون باید بر مبنای عملکرد میانگین باشه، بهتره روش محاسبه رو قدری تغییر بدیم.
    اصول محاسبه رتبه البته همین هست و تفاوتی نمیکنه.÷

  24. #24

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    فرمولی که برای محاسبه عملکرد وزنی استفاده کردین مطمئنین درسته؟
    اگر همین باشه که دیدم، چون باید بر مبنای عملکرد میانگین باشه، بهتره روش محاسبه رو قدری تغییر بدیم.
    اصول محاسبه رتبه البته همین هست و تفاوتی نمیکنه.÷
    فکر کنم درست باشه چون ضریب و زنی فقط نقش یک ضریب رو داره و عملکرد هر ناحیه در همان سال نسبت به کل عملکرد همون سال محاسبه میشه ( چون در آخر جمع کل عملکردی که با اعمال ضریب وزنی بدست میاد با جمع درصد عملکردی بدون ضریب یکی درمیاد

    بازم اگه شما روش محاسبه دیگری مد نظرتون هست بفرمائید شاید من اشتباه میکنم

  25. #25
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    این فرمول که استفاده کردین نادرست هست، چون برای هر ناحیه یک عدد ثابت (عملکرد کل) رو در ضریب وزنی ضرب کردین، در نتیجه همیشه رتبه وزنی به ترتیب وزن ها بدست میاد و ثابت هست.
    باز هم شما دوباره چک کنین شاید من دقت نکردم.

    درسش این هست که عملکرد هر ناحیه در ضریب وزنی ضرب بشه تا یک عملکرد وزنی داشته باشیم، و بعد روی این رتبه بندی کنیم.

    من بر همین اساس یک نمونه براتون آماده میکنم.

  26. #26

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    این فرمول که استفاده کردین نادرست هست، چون برای هر ناحیه یک عدد ثابت (عملکرد کل) رو در ضریب وزنی ضرب کردین، در نتیجه همیشه رتبه وزنی به ترتیب وزن ها بدست میاد و ثابت هست.
    باز هم شما دوباره چک کنین شاید من دقت نکردم.

    درسش این هست که عملکرد هر ناحیه در ضریب وزنی ضرب بشه تا یک عملکرد وزنی داشته باشیم، و بعد روی این رتبه بندی کنیم.

    من بر همین اساس یک نمونه براتون آماده میکنم.
    سلام
    دقیقا من منظورم همین روش محاسبه رتبه بندی است ولی احتمالا در نحوه بیان و یا محاسبات آن اشتباه کردم
    پیشاپیش بابت قبول زحمت نمونه مد نظرتون متشکرم
    آخرین ویرایش به وسیله iransim : چهارشنبه 27 اسفند 1399 در 23:32 عصر

  27. #27
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    رتبه بندی عملکرد در گزارش WEIGHTED RANKING

    اول یک جدول نواحی درست میکنیم که ضرایب وزنی رو بتونیم نگهداری کنیم:
    2.PNG

    احتمالا چنین جدولی رو دارین خودتون، چون در جدول ثبت کد نواحی هم دیده میشه.

  28. #28
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    طراحی کوئری ها قدری تغییر میکنه و گروه بندی رو بر اساس کدناحیه (بجای ناحیه) انجام میدیم که اصولی تر هست.


    /* EBLAGH_PROJECT_KOL */
    SELECT TblSabt.IDNahi, Count(TblSabt.NumPro) AS PEK
    FROM TblSabt
    WHERE (((TblSabt.Pol)>0))
    GROUP BY TblSabt.IDNahi;


    /* TAHVIL_PROJECT_SAL */
    SELECT TblSabt.IDNahi, Count(TblSabt.NumPro) AS PTS
    FROM TblSabt
    WHERE (((TblSabt.Pol)>0) And ((TblSabt.Emtiaz)>0) And ((TblSabt.Sal)=TEMPVARS!SAL))
    GROUP BY TblSabt.IDNahi;


    /* AMALKARD_PROJECT_KOL */
    SELECT EP.IDNAHI, EP.PEK, TP.PTK, [TP].[PTK]/[EP].[PEK] AS PAK, [NAVAHI].[VAZN]*[PAK] AS PAWK
    FROM (EBLAGH_PROJECT_KOL AS EP INNER JOIN TAHVIL_PROJECT_KOL AS TP ON EP.IDNAHI = TP.IDNAHI) INNER JOIN Navahi ON EP.IDNahi = Navahi.IDNahi;


    /* AMALKARD_PROJECT_SAL_ROTBE */
    SELECT A.IDNAHI, A.PES, A.PTS,
    A.PAS, (SELECT COUNT (*)+1 FROM (SELECT PAS FROM AMALKARD_PROJECT_SAL) AS B WHERE A.PAS<B.PAS) AS PRS,
    A.PASW, (SELECT COUNT (*)+1 FROM (SELECT PASW FROM AMALKARD_PROJECT_SAL) AS B WHERE A.PASW<B.PASW) AS PRSW
    FROM AMALKARD_PROJECT_SAL AS A;

  29. #29
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    و کوئری نهایی:

    /* AMALKARD_PROJECT */
    SELECT Navahi.Nahi, Navahi.vazn, K.PEK, K.PTK, K.PAK, K.PRK, K.PAWK, K.PRWK, S.PES, S.PTS, S.PAS, S.PRS, S.PASW, S.PRSW
    FROM (AMALKARD_PROJECT_KOL_ROTBE AS K INNER JOIN AMALKARD_PROJECT_SAL_ROTBE AS S ON K.IDNAHI = S.IDNAHI)
    INNER JOIN Navahi ON K.IDNAHI = Navahi.IDNahi
    ORDER BY Navahi.Nahi;

  30. #30
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    و خروجی:
    1.PNG

  31. #31
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    برنامه نمونه:

    کدها رو از نظر درست بودن مقادیر و فرمول ها چک کنین!
    فایل های ضمیمه فایل های ضمیمه

  32. #32

    نقل قول: رتبه بندی عملکرد در گزارش

    سلام و عرض ادب
    ابتدا حلول سال 1400 و نوروز باستانی رو خدمت شما تبربک عرض میکنم
    دربعد مجددا بابت قبول زحمت تهیه نمونه گزارش بسیار بسیار ممنون و سپاسگزارم
    مثل همیشه خیلی مختصر و عالی
    بابت کدها که روی برنامه خودم پیاده کردم مثل ساعت کار میکنه
    بابت چک کردن فرمولها و محاسبه درصدها و عملکرد اونم چشم حتما با اون نحوه محاسبه مدنظر چک میکنم و اگر سئوالی بود با اجازتون بازم مزاحم میشم
    فقط تا فراموش نکردم بپرسم که چرا گزارش عملکردی که از طریق فرم لود میشه قابلیت تغییر در نوع فونت رو نداره ( در واقع فونتهای فارسی رو هر چند درحالت ویرایش قبول میکنه ولی زمانی که فرم رو اجرا میکنم مجددا فرمتها به حالت اولیه برمیگرده )
    بازم ممنون از وقت و حو صله ای که گذاشتید.

  33. #33

    نقل قول: رتبه بندی عملکرد در گزارش

    جناب Mazoolagh سلام و عرض ادب
    با پوزش بابت زحمت مجدد
    در نمونه زیر با استفاده از نمونه گزارش شما دو عملکرد و رتبه بندی ( رتبه گروه A , رتبه گروه B ) رو میخواستم انجام بدم ، برای این کار نیاز به جمع کل پروژه های ابلاغی و جمع کل پروژه های تحویلی در سال انتخابی دارم که هر کاری کردم نتونستم با تابع SUM در کوئری اون رو محاسبه کنم
    اگر در خصوص نحوه محاسبه جمع کل راهنمائی کنید ممنون میشم
    البته این نکته رو هم بگم عملکرد و رتبه بندی که در نمونه های قبلی انجام دادیم در واقع همون رتبه بندی گروه B هست ، ولی در گروه A عملکرد : نسبت پروژه های تحویلی هر ناحیه به کل پروژه های ابلاغی مدیریت در سال انتخابی میباشد
    یعنی (جمع کل ابلاغی مدیریت در سال انتخابی / تحویلی ناحیه در سال انتخابی = A گروه )

    مثلا برای ناحیه آبپخش درصد عملکرد باید عملکرد گروه ( A = 63*100/529 =11.91 ) و با ضریب وزنی (11.91%)(21%) که عدد 529 جمع کل پروژه های ابلاغی مدیریت میباشد .
    فایل های ضمیمه فایل های ضمیمه

  34. #34
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط iransim مشاهده تاپیک
    در نمونه زیر با استفاده از نمونه گزارش شما دو عملکرد و رتبه بندی ( رتبه گروه A , رتبه گروه B ) رو میخواستم انجام بدم ، برای این کار نیاز به جمع کل پروژه های ابلاغی و جمع کل پروژه های تحویلی در سال انتخابی دارم که هر کاری کردم نتونستم با تابع SUM در کوئری اون رو محاسبه کنم
    ...
    ...
    سلام و روز خوش
    نوروز شما و همه اعضا مبارک

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

    جمع مواردی که گفتین در هر دو برنامه آمده، تا جایی که یادم هست همه محاسبات پروژه ها رو آوردم، فقط محاسبه اعتبارات رو گذاشتم خودتون تکمیل کنین چون دقیقا فرمول ها مشابه هست.

  35. #35

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام و روز خوش
    نوروز شما و همه اعضا مبارک

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

    جمع مواردی که گفتین در هر دو برنامه آمده، تا جایی که یادم هست همه محاسبات پروژه ها رو آوردم، فقط محاسبه اعتبارات رو گذاشتم خودتون تکمیل کنین چون دقیقا فرمول ها مشابه هست.
    سلام و عرض ادب
    عرض شود خدمت شما که چون منظور همان برنامه پیوست در پست 31 بود که زحمت کشیده بودید از پیوست مجدد خودداری کردم
    منظور از سئوال این بود که برای رتبه گروه A و B تغییراتی انجام بشه که برای ( رتبه گروه A تعداد پروژه تحویل شده هر ناحیه در کل سنوات تقسیم بر کل تحویل شده در کل سنوات محاسبه میشود ) و برای ( رتبه گروه B تعداد پروژه تحویل شده هر ناحیه در سال جاری تقسیم بر کل تحویل شده مدیریت در همان سال جاری محاسبه میشود )
    در واقع محاسبات بروی تحویل شده هر ناحیه نسبت به تحویل شده کل در کل سنوات و سال جاری مد نظر میباشد . ( در رتبه بندی های قبل نسبت تحویل شده به ابلاغی محاسبه میشد )

    یا به عبارت دیگر
    رتبه گروه A : محاسبه نسبت تحویل تحول انجام شده توسط هر ناحیه به کل تحول تحول انجام شده در مدیریت در سال انتخابی
    رتبه گروه B : محاسبه نسبت تحویل تحول انجام شده توسط هر ناحیه به کل تحول تحول انجام شده همان ناحیه در سال انتخابی
    آخرین ویرایش به وسیله iransim : یک شنبه 15 فروردین 1400 در 07:31 صبح

  36. #36
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    فکر کنم منظور شما این خطا بوده:
    1.PNG

    علتش این هست که در زیرلایه های کوئری نهایی از sum استفاده شده و دوباره sum گرفتن روی اون پیچیده است.

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

  37. #37
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    1- لازم نیست که این جدول رو دستی طراحی کنین، کافی هست کد زیر رو یک بار اجرا کنین:
    SELECT * INTO  Tbl_AB_ROTBEH FROM AB_ROTBEH


    2- record source گزارش رو به جدول Tbl_AB_ROTBEH تغییر بدین

    3- در فرم FrmFirst ماکرو که برای رخداد باتن تعریف کردین بردارین و بجاش کد زیر رو بگذارین:
    Private Sub Command7_Click()
    DoCmd.RunSQL "DELETE FROM Tbl_AB_ROTBEH"
    DoCmd.RunSQL "INSERT INTO Tbl_AB_ROTBEH SELECT * FROM AB_ROTBEH"
    DoCmd.OpenReport "AB_Rotbeh", acViewReport
    End Sub

  38. #38
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

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

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

  39. #39

    نقل قول: رتبه بندی عملکرد در گزارش

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    این تغییرات رو در برنامه پیوست اعمال کردم.
    فکر کنم بعد از این دیگه مشکل خاصی نداشته باشین.

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

    خطا در تابع Sum دقیقا همونی بود که گفتید و بازم منتظر نمونه کاری که فرمودید هستم .
    فقط در توضیح بیشتر اینکه : همانطور که در پست 35 اشاره کردم در رتبه بندی گروه های A و B
    در واقع در کوئری AMALKARD : برای گروه A فیلد PAS (عملکرد ناحیه نسبت به کل عملکرد مدیریت در سال جاری ) به جای فرمول ( PAS: [TP].[PTS]/[EP].[PES] ) باید به شکل ( جمع کل تحویل و تحول مدیریت در سال /تحویل و تحول ناحیه در سال : PAS ) محاسبه شود
    و برای گروه B فیلد PAS (عملکرد ناحیه نسبت به خود ناحیه در سال جاری ) به جای فرمول ( PAS: [TP].[PTS]/[EP].[PES] ) باید به شکل ( ابلاغی ناحیه در سال / تحویل و تحول ناحیه در سال : PAS ) محاسبه شود

    فایل تصویر پیوست نیز برای توضیح بیشتر محاسبات ضمیمه کردم
    عکس های ضمیمه عکس های ضمیمه

  40. #40
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,030

    نقل قول: رتبه بندی عملکرد در گزارش

    1- دوباره برنامه پیوست شما در پست 33 رو چک کردم.
    اونچه باعث میشه نتونین روی رکوردها sum بگیرین اینه که کوئری نادرست بعنوان دیتاسورس گزارش تعریف کردین:
    شما از کوئری رتبه بندی استفاده کردین در حالی که باید کوئری عملکرد باشه (برنامه پست 31)
    این مورد رو من هم دقت نکرده بودم، بنابراین برنامه پست 38 کلا موضوعیت نداره و همون برنامه پست 31 رو مبنای کار قرار بدین.

    2- وقتی که جمع پروژه ها (و اعتبارات) رو دارین (چه کل سنوات و چه سال انتخابی) برای مابقی محاسبات دیگه نباید مشکلی باشه.
    این جمع ها رو میتونین با dsum یا یک کوئری گروه بندی شده بدست بیارین و در فرمولها قرار بدین.

    3- قولی که در پست 38 دادم (یک جدول بجای چندین کوئری) سر جای خودش هست و اگر مشکلی پیش نیاد امروز آماده میکنم.

صفحه 1 از 2 12 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •