Пример #1
0
        public override void Update(object[] expressions, IErrorContext iErrorContext)
        {
            object obj = expressions[0];

            AspNetCore.ReportingServices.ReportProcessing.DataAggregate.DataTypeCode typeCode = DataAggregate.GetTypeCode(obj);
            if (!DataAggregate.IsNull(typeCode))
            {
                if (!DataTypeUtility.IsNumeric(typeCode))
                {
                    iErrorContext.Register(ProcessingErrorCode.rsAggregateOfNonNumericData, Severity.Warning);
                    throw new ReportProcessingException(ErrorCode.rsInvalidOperation);
                }
                DataAggregate.ConvertToDoubleOrDecimal(typeCode, obj, out typeCode, out obj);
                if (this.m_expressionType == AspNetCore.ReportingServices.ReportProcessing.DataAggregate.DataTypeCode.Null)
                {
                    this.m_expressionType = typeCode;
                }
                else if (typeCode != this.m_expressionType)
                {
                    iErrorContext.Register(ProcessingErrorCode.rsAggregateOfMixedDataTypes, Severity.Warning);
                    throw new ReportProcessingException(ErrorCode.rsInvalidOperation);
                }
                object obj2 = DataAggregate.Square(typeCode, obj);
                if (this.m_sumOfX == null)
                {
                    this.m_sumOfXType    = typeCode;
                    this.m_sumOfX        = obj;
                    this.m_sumOfXSquared = obj2;
                }
                else
                {
                    this.m_sumOfX        = DataAggregate.Add(this.m_sumOfXType, this.m_sumOfX, typeCode, obj);
                    this.m_sumOfXSquared = DataAggregate.Add(this.m_sumOfXType, this.m_sumOfXSquared, typeCode, obj2);
                }
                this.m_currentCount += 1u;
            }
        }