protected static string GetMathmaticalExpressionColumn(StandardProviderParameters std, tgDynamicQuerySerializable query, tgMathmaticalExpression mathmaticalExpression) { string sql = "("; if (mathmaticalExpression.ItemFirst) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, true); sql += esArithmeticOperatorToString(mathmaticalExpression.Operator); if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, true); } else { sql += GetMathmaticalExpressionLiteralType(std, mathmaticalExpression); } } else { if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, true); } else { sql += GetMathmaticalExpressionLiteralType(std, mathmaticalExpression); } sql += esArithmeticOperatorToString(mathmaticalExpression.Operator); sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, true); } sql += ")"; return sql; }
protected static string GetMathmaticalExpressionLiteralType(StandardProviderParameters std, tgMathmaticalExpression mathmaticalExpression) { switch (mathmaticalExpression.LiteralType) { case tgSystemType.String: return Delimiters.StringOpen + (string)mathmaticalExpression.Literal + Delimiters.StringClose; case tgSystemType.DateTime: return Delimiters.StringOpen + ((DateTime)(mathmaticalExpression.Literal)).ToShortDateString() + Delimiters.StringClose; default: return Convert.ToString(mathmaticalExpression.Literal); } }
protected static string GetMathmaticalExpressionColumn(StandardProviderParameters std, tgDynamicQuerySerializable query, tgMathmaticalExpression mathmaticalExpression) { string sql = "("; if (mathmaticalExpression.ItemFirst) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, true); switch (mathmaticalExpression.Operator) { case tgArithmeticOperator.Add: sql += "+"; break; case tgArithmeticOperator.Subtract: sql += "-"; break; case tgArithmeticOperator.Multiply: sql += "*"; break; case tgArithmeticOperator.Divide: sql += "/"; break; case tgArithmeticOperator.Modulo: sql += "%"; break; } if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, true); } else { switch (mathmaticalExpression.LiteralType) { case tgSystemType.String: sql += Delimiters.StringOpen + (string)mathmaticalExpression.Literal + Delimiters.StringClose; break; case tgSystemType.DateTime: sql += Delimiters.StringOpen + ((DateTime)(mathmaticalExpression.Literal)).ToShortDateString() + Delimiters.StringClose; break; default: sql += Convert.ToString(mathmaticalExpression.Literal); break; } } } else { if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, true); } else { switch (mathmaticalExpression.LiteralType) { case tgSystemType.String: sql += Delimiters.StringOpen + (string)mathmaticalExpression.Literal + Delimiters.StringClose; break; case tgSystemType.DateTime: sql += Delimiters.StringOpen + ((DateTime)(mathmaticalExpression.Literal)).ToShortDateString() + Delimiters.StringClose; break; default: sql += Convert.ToString(mathmaticalExpression.Literal); break; } } switch (mathmaticalExpression.Operator) { case tgArithmeticOperator.Add: sql += "+"; break; case tgArithmeticOperator.Subtract: sql += "-"; break; case tgArithmeticOperator.Multiply: sql += "*"; break; case tgArithmeticOperator.Divide: sql += "/"; break; case tgArithmeticOperator.Modulo: sql += "%"; break; } sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, true); } sql += ")"; return sql; }
protected static string tgArithmeticOperatorToString(tgMathmaticalExpression mathmaticalExpression) { switch (mathmaticalExpression.Operator) { case tgArithmeticOperator.Add: // MEG - 4/26/08, I'm not thrilled with this check here, will revist on future release if (mathmaticalExpression.SelectItem1.Column.Datatype == tgSystemType.String || (mathmaticalExpression.SelectItem1.HasMathmaticalExpression && mathmaticalExpression.SelectItem1.MathmaticalExpression.LiteralType == tgSystemType.String) || (mathmaticalExpression.SelectItem1.HasMathmaticalExpression && mathmaticalExpression.SelectItem1.MathmaticalExpression.SelectItem1.Column.Datatype == tgSystemType.String) || (mathmaticalExpression.LiteralType == tgSystemType.String)) return "||"; else return "+"; case tgArithmeticOperator.Subtract: return " - "; case tgArithmeticOperator.Multiply: return " * "; case tgArithmeticOperator.Divide: return " / "; case tgArithmeticOperator.Modulo: return " % "; default: return ""; } }
private tgQueryItem() { this.Expression = new tgMathmaticalExpression(); }
protected static string GetMathmaticalExpressionColumn(StandardProviderParameters std, tgDynamicQuerySerializable query, tgMathmaticalExpression mathmaticalExpression) { bool isConcat = false; string sql = "("; if (mathmaticalExpression.ItemFirst) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, false); sql += esArithmeticOperatorToString(mathmaticalExpression, out isConcat); if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, false); } else { sql += GetMathmaticalExpressionLiteralType(std, mathmaticalExpression); } } else { if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, true); } else { sql += GetMathmaticalExpressionLiteralType(std, mathmaticalExpression); } sql += esArithmeticOperatorToString(mathmaticalExpression, out isConcat); sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, false); } sql += ")"; if (isConcat) { sql = "CONCAT(" + sql.Substring(1, sql.Length - 2) + ")"; } return sql; }
protected static string GetMathmaticalExpressionColumn(StandardProviderParameters std, tgDynamicQuerySerializable query, tgMathmaticalExpression mathmaticalExpression) { bool isMod = false; bool needsRounding = false; string sql = "("; if (mathmaticalExpression.ItemFirst) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, false); sql += esArithmeticOperatorToString(mathmaticalExpression, out isMod, out needsRounding); if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, false); } else { sql += GetMathmaticalExpressionLiteralType(std, mathmaticalExpression); } } else { if (mathmaticalExpression.SelectItem2 != null) { sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem2, true, true); } else { sql += GetMathmaticalExpressionLiteralType(std, mathmaticalExpression); } sql += esArithmeticOperatorToString(mathmaticalExpression, out isMod, out needsRounding); sql += GetExpressionColumn(std, query, mathmaticalExpression.SelectItem1, true, false); } sql += ")"; if (isMod) { sql = "MOD(" + sql.Replace("(", String.Empty).Replace(")", String.Empty) + ")"; } if (needsRounding) { sql = "ROUND(" + sql + ", 10)"; } return sql; }