Programming/.NET

합계 계산하기(2)

초록깨비 2008. 12. 4. 09:20
728x90

Private Sub xgTA_EE030_VView_CustomSummaryCalculate(ByVal sender As Object, ByVal e As DevExpress.Data.CustomSummaryEventArgs) Handles xgTA_EE030_VView.CustomSummaryCalculate

        If e.SummaryProcess = DevExpress.Data.CustomSummaryProcess.Finalize Then

            ' 달성율, 신장율 계산

            '  1) 목표 달성율
            Dim douSale_amt As Double = CType(Func.NVL(colSALE_AMT.SummaryText, "0"), Double)
            Dim douPlan_amt As Double = CType(Func.NVL(colPLAN_AMT.SummaryText, "0"), Double)

            If douPlan_amt = 0 Then
                colCURR_GOAL_RATE.SummaryItem.DisplayFormat = 0 & "%"
            Else
                colCURR_GOAL_RATE.SummaryItem.DisplayFormat = Func.Round((douSale_amt / douPlan_amt) * 100, 1) & "%"
            End If

            '  2) 전일기준 달성율
            Dim douPrev_day_amt As Double = CType(Func.NVL(colPREV_DAY_AMT.SummaryText, "0"), Double)
            Dim douPrev_sale_amt As Double = CType(Func.NVL(colPREV_SALE_AMT.SummaryText, "0"), Double)

            If douPrev_day_amt = 0 Then
                colPREV_GOAL_RATE.SummaryItem.DisplayFormat = 0 & "%"
            Else
                colPREV_GOAL_RATE.SummaryItem.DisplayFormat = Func.Round((douPrev_sale_amt / douPrev_day_amt) * 100, 1) & "%"

            End If

            '  3) 신장율
            'DECODE(SIGN(A.PREV_YY_AMT),0,0,-1, ROUND(((A.SALE_AMT - A.PREV_YY_AMT) /A.PREV_YY_AMT) * 100 * -1,1),
            'ROUND(((A.SALE_AMT - A.PREV_YY_AMT)/A.PREV_YY_AMT) * 100 ,1)) AS CURR_UP_RATE
            Dim douPrev_yy_amt As Double = CType(Func.NVL(colPREV_YY_AMT.SummaryText, "0"), Double)

            If Math.Sign(douPrev_yy_amt) = 0 Then
                colCURR_UP_RATE.SummaryItem.DisplayFormat = 0 & "%"
            ElseIf Math.Sign(douPrev_yy_amt) = -1 Then
                colCURR_UP_RATE.SummaryItem.DisplayFormat = Func.Round(((douSale_amt - douPrev_yy_amt) / douPrev_yy_amt) * 100 * -1, 1) & "%"
            Else
                colCURR_UP_RATE.SummaryItem.DisplayFormat = Func.Round(((douSale_amt - douPrev_yy_amt) / douPrev_yy_amt) * 100, 1) & "%"
            End If

            '  4) 누계 달성율
            'DECODE(A.PREV_PLAN_CAMT, 0, 0, ROUND(A.YY_CAMT / A.PREV_PLAN_CAMT * 100, 1))       AS  PREV_C_GOAL_RATE
            Dim douPrev_plan_camt As Double = CType(Func.NVL(Me.colPREV_PLAN_CAMT.SummaryText, "0"), Double)
            Dim douYy_camt As Double = CType(Func.NVL(colYY_CAMT.SummaryText, "0"), Double)

            If douPrev_plan_camt = 0 Then
                colPREV_C_GOAL_RATE.SummaryItem.DisplayFormat = 0 & "%"
            Else
                colPREV_C_GOAL_RATE.SummaryItem.DisplayFormat = Func.Round((douYy_camt / douPrev_plan_camt) * 100, 1) & "%"
            End If

            '  5) 누계 신장율
            'DECODE(SIGN(A.PREV_YY_CAMT),0,0,-1, ROUND(((A.YY_CAMT - A.PREV_YY_CAMT) /A.PREV_YY_CAMT) * 100 * -1,1),
            'ROUND(((A.YY_CAMT - A.PREV_YY_CAMT)/A.PREV_YY_CAMT) * 100 ,1)) AS PREV_C_UP_RATE
            Dim douPrev_yy_camt As Double = CType(Func.NVL(Me.colPREV_YY_CAMT.SummaryText, "0"), Double)

            If Math.Sign(douPrev_yy_camt) = 0 Then
                colPREV_C_UP_RATE.SummaryItem.DisplayFormat = 0 & "%"
            ElseIf Math.Sign(douPrev_yy_amt) = -1 Then
                colPREV_C_UP_RATE.SummaryItem.DisplayFormat = Func.Round(((douYy_camt - douPrev_yy_camt) / douPrev_yy_camt) * 100 * -1, 1) & "%"
            Else
                colPREV_C_UP_RATE.SummaryItem.DisplayFormat = Func.Round(((douYy_camt - douPrev_yy_camt) / douPrev_yy_camt) * 100, 1) & "%"
            End If
        End If
    End Sub


 

728x90