public override Query VisitFieldExpression(CalcParser.FieldExpressionContext context) { Query fieldQuery = Visit(context.expression()); string fieldName = fieldQuery.Text; FieldInfo fieldInfo = this._metadataResolver.GetField(fieldName); ResultType type = ResultType.Number; string queryText; if (fieldInfo.Type != DFM_FIELD_TYPE.DFM_FT_STRING && fieldInfo.Type != DFM_FIELD_TYPE.DFM_FT_MEMO) { if (fieldInfo.Type == DFM_FIELD_TYPE.DFM_FT_DATE) { type = ResultType.Date; } queryText = "X" + fieldInfo.Name; } else { queryText = this._dbTranslator.FieldToInt(fieldInfo); } return(new Query(queryText, type)); }
public override Query VisitNormdExpression(CalcParser.NormdExpressionContext context) { Query fieldQuery = Visit(context.expression()); string fieldName = fieldQuery.Text; FieldInfo fieldInfo = this._metadataResolver.GetField(fieldName); string queryText; switch (fieldInfo.Type) { case DFM_FIELD_TYPE.DFM_FT_DATE: queryText = "X" + fieldName; break; case DFM_FIELD_TYPE.DFM_FT_MEMO: case DFM_FIELD_TYPE.DFM_FT_STRING: queryText = this._dbTranslator.FieldToDate(fieldInfo); break; default: throw new ExpressionException("$NORMD can be applied for DATE and STRING fields only"); } return(new Query(queryText, ResultType.Date)); }
private FieldInfo CreateFieldInfo(string name, DFM_FIELD_TYPE type) { FieldInfo fieldInfo = new FieldInfo { Name = name, Type = type }; return(fieldInfo); }
public override Query VisitFldlenExpression(CalcParser.FldlenExpressionContext context) { Query fieldQuery = Visit(context.expression()); string fieldName = fieldQuery.Text; FieldInfo fieldInfo = this._metadataResolver.GetField(fieldName); string queryText = this._dbTranslator.FieldLength(fieldInfo); return(new Query(queryText, ResultType.Number)); }
public override string FieldLength(FieldInfo fieldInfo) { if (fieldInfo.Type == DFM_FIELD_TYPE.DFM_FT_INTEGER) { return($"CHAR_LENGTH(CAST(X{fieldInfo.Name} AS INTEGER))"); } if (fieldInfo.Type == DFM_FIELD_TYPE.DFM_FT_DECIMAL) { return($"(CHAR_LENGTH(CAST(X{fieldInfo.Name} AS INTEGER)) + {fieldInfo.Precision + 1})"); } return($"CHAR_LENGTH(X{fieldInfo.Name})"); }
public override string FieldToDate(FieldInfo fieldInfo) { return($"CAST(REPLACE(X{fieldInfo.Name}, 'T', ' ') AS DATE)"); }
public override string FieldToInt(FieldInfo fieldInfo) { return($"CAST(X{fieldInfo.Name} AS INTEGER)"); }
public override string FieldLength(FieldInfo fieldInfo) { return($"LEN(X{fieldInfo.Name})"); }
public override string FieldToDate(FieldInfo fieldInfo) { return($"CONVERT(datetime, X{fieldInfo.Name}, 126)"); }
public abstract string FieldToDate(FieldInfo fieldInfo);
public abstract string FieldLength(FieldInfo fieldInfo);
public abstract string FieldToInt(FieldInfo fieldInfo);
public override string FieldToDate(FieldInfo fieldInfo) { return($"TO_DATE(X{fieldInfo.Name}, 'YYYY-MM-DD\"T\"HH24:MI:SS')"); }
public override string FieldToInt(FieldInfo fieldInfo) { return($"TO_NUMBER(X{fieldInfo.Name})"); }