public CalculateStackResult CalculateResult(CalculateStackResult tempResult, string strValueSpliter) { string strValue = string.Empty; switch (this.CacluteOperation) { case CombinedOperation.NumAdd: strValue = this.AddNumbersIntoAColumn(tempResult); break; case CombinedOperation.NumSubtract: strValue = this.SubtractNumbersIntoAColumn(tempResult); break; case CombinedOperation.NumMultipy: strValue = this.MultiPlayNumbersIntoAColumn(tempResult); break; case CombinedOperation.NumDivide: strValue = this.DivideNumbersIntoAColumn(tempResult); break; case CombinedOperation.StrConcat: default: strValue = this.ConcatString(tempResult, strValueSpliter); break; } CalculateStackResult calcuateResult = new CalculateStackResult(tempResult.CacluteOperation, strValue, tempResult.Bracket); return(calcuateResult); }
private string ConcatString(CalculateStackResult tempResult, string strValueSpliter) { StringBuilder sbExpression = new StringBuilder(); string strValue = Result.ToString(); sbExpression.AppendFormat("{0}{1}{0}{2}", strValueSpliter, this.Result, tempResult.Result); return(sbExpression.ToString()); }
private string MultiPlayNumbersIntoAColumn(CalculateStackResult tempResult) { decimal number1 = 0m, number2 = 0m; decimal.TryParse(Result.ToString(), out number1); decimal.TryParse(tempResult.Result.ToString(), out number2); number1 *= number2; return(number1.ToString()); }
public CalculateStackResult GetResultWithoutBracket(Stack stack) //Modified at 2009-2-16 15:35:41@Scott { ArrayList arr = new ArrayList(); string strValue = string.Empty; while (stack.Count > 0) { CalculateStackResult br = stack.Pop() as CalculateStackResult; if (br.CacluteOperation >= CombinedOperation.NumMultipy) { while (stack.Count > 0 && br.CacluteOperation >= CombinedOperation.NumMultipy) { CalculateStackResult tempResult = stack.Pop() as CalculateStackResult; br = br.CalculateResult(tempResult, this.ValueSpliter); } } arr.Add(br); } CalculateStackResult bRet = new CalculateStackResult(CombinedOperation.StrConcat, string.Empty, Bracket.NONE); if (arr.Count > 0) { bRet = arr[0] as CalculateStackResult; for (int i = 1; i < arr.Count; i++) { CalculateStackResult tempResult = arr[i] as CalculateStackResult; bRet = bRet.CalculateResult(tempResult, this.ValueSpliter); } } return(bRet); }
public string GetResult(DataRow row) { string strValue = string.Empty; if (this.Field is CalculateColumnInfo) { object objValue = (Field as CalculateColumnInfo).GetResultWithBracket(row); strValue = objValue.ToString(); } else { string strField = Field.ToString(); if (!row.Table.Columns.Contains(strField)) { strValue = string.Empty; } else { strValue = row[strField].ToString(); } } if (this.ConstantValue == string.Empty) { return(strValue); } CalculateStackResult calcStackResult = new CalculateStackResult(this.CacluteConstantOperation, strValue, Bracket.NONE); CalculateStackResult calcResult2 = new CalculateStackResult(this.CacluteFieldOperation, this.ConstantValue, Bracket.NONE); calcStackResult = calcStackResult.CalculateResult(calcResult2, string.Empty); return(calcStackResult.Result.ToString()); }
private string DivideNumbersIntoAColumn(CalculateStackResult tempResult) { decimal number1 = 0m, number2 = 0m; decimal.TryParse(Result.ToString(), out number1); decimal.TryParse(tempResult.Result.ToString(), out number2); if (number2 == 0) { number1 = 0; } else { number1 /= number2; if (number1 * 100 != (int)(number1 * 100)) { number1 = decimal.Round(number1, 2); } } return(number1.ToString()); }
public object GetResultWithBracket(DataRow row) { try { //12-17-2007@Scott Stack stack = new Stack(); Stack tempstack; foreach (CalcElement calcElement in this) { string strValue = calcElement.GetResult(row); CalculateStackResult br = new CalculateStackResult(calcElement.CacluteFieldOperation, strValue, calcElement.Bracket); if (calcElement.Bracket == Bracket.End) { tempstack = new Stack(); tempstack.Push(br); br = stack.Pop() as CalculateStackResult; while (br.Bracket != Bracket.Start) { tempstack.Push(br); if (stack.Count == 0) { System.Windows.Forms.MessageBox.Show("Bad Bracket Count!"); return(false); } br = stack.Pop() as CalculateStackResult; } tempstack.Push(br); br = GetResultWithoutBracket(tempstack); br.Bracket = Bracket.NONE; } stack.Push(br); } tempstack = new Stack(); while (stack.Count > 0) { tempstack.Push(stack.Pop()); } CalculateStackResult result = GetResultWithoutBracket(tempstack); return(result.Result); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Check filter result error. Message:" + ex.Message); return(string.Empty); } }