コード例 #1
0
        protected virtual string CreateBetweenConditionString(string fieldName, IBetweenValue value)
        {
            if (!(value.FirstValue is INullValue || value.SecondValue is INullValue))
            {
                return(string.Concat("(", fieldName, OperatorString(RelationalOperators.Between), ValueConverter.ConvertValueToString(value), ")"));
            }

            if (value.FirstValue is INullValue && value.SecondValue is INullValue)
            {
                return(null);
            }

            string valueString    = null;
            string operatorString = null;

            if (value.FirstValue is INullValue)
            {
                valueString    = ValueConverter.ConvertValueToString(value.SecondValue);
                operatorString = OperatorString(RelationalOperators.Equal | RelationalOperators.LessThan);
            }
            else
            {
                valueString    = ValueConverter.ConvertValueToString(value.FirstValue);
                operatorString = OperatorString(RelationalOperators.Equal | RelationalOperators.GreaterThan);
            }

            return(string.Concat(ConditionStringItemPrefix, fieldName, operatorString, valueString, ConditionStringItemPostfix));
        }
コード例 #2
0
 protected virtual string ConvertValueToString(IBetweenValue value)
 {
     return(string.Concat(ConvertValueToString(value.FirstValue), " And ", ConvertValueToString(value.SecondValue)));
 }
コード例 #3
0
ファイル: ConditionGroup.cs プロジェクト: ChrisNice89/VBA
 private bool ContainsIgnoreValue(IBetweenValue value, object ignoreValue)
 {
     return(ContainsIgnoreValue(value.FirstValue, ignoreValue) || ContainsIgnoreValue(value.SecondValue, ignoreValue));
 }
コード例 #4
0
        protected virtual string CreateBetweenConditionString(IField field, RelationalOperators op, IBetweenValue value)
        {
            if (op == RelationalOperators.Between)
            {
                var fieldName = NameConverter.GenerateFieldString(field);
                return(CreateBetweenConditionString(fieldName, value));
            }

            op = (op ^ RelationalOperators.Between);

            if (op == RelationalOperators.AddWildcardSuffix)
            {
                string condString = string.Empty;

                if (!(value.FirstValue is INullValue))
                {
                    condString = CreateConditionString(field, RelationalOperators.Equal | RelationalOperators.GreaterThan, value.FirstValue);
                }

                if (value.SecondValue is INullValue)
                {
                    return(condString);
                }

                if (field.DataType == FieldDataType.DateTime)
                {
                    DateTime d;
                    if (value.SecondValue is IDateTimeValue)
                    {
                        d = ((IDateTimeValue)value.SecondValue).Value;
                    }
                    else
                    {
                        throw new InvalidCastException("IDateTimeValue required");
                    }

                    condString = string.Concat("(", condString, " And ", CreateConditionString(field, RelationalOperators.LessThan, d.Date.AddDays(1)), ")");
                    return(condString);
                }

                if (field.DataType == FieldDataType.Text)
                {
                    string s;
                    if (value.SecondValue is ITextValue)
                    {
                        s = ((ITextValue)value.SecondValue).Value;
                    }
                    else
                    {
                        throw new InvalidCastException("ITextValue required");
                    }

                    if (!string.IsNullOrEmpty(s))
                    {
                        s = s.Substring(0, s.Length - 1) + (char)(s[s.Length - 1] + 1);
                    }

                    condString = string.Concat("(", condString, " And ", CreateConditionString(field, RelationalOperators.LessThan, s), ")");
                    return(condString);
                }
            }

            throw new NotSupportedRelationalOperatorException(op);
        }
コード例 #5
0
ファイル: ConditionGroup.cs プロジェクト: ChrisNice89/VBA
        private IConditionGroup AddBetweenCondition(IField field, RelationalOperators relationalOperator, IBetweenValue values, object ignoreValue)
        {
            if (ContainsIgnoreValue(values.FirstValue, ignoreValue) && ContainsIgnoreValue(values.SecondValue, ignoreValue))
            {
                return(this);
            }

            Add(new FieldCondition(field, relationalOperator, values));
            return(this);
        }