Пример #1
0
        protected override void OnTranslateFilterSyntax(object sender, TranslateFilterSyntaxEventArgs e)
        {
            base.OnTranslateFilterSyntax(sender, e);
            if (e.Handled)
            {
                return;
            }

            switch (e.Part)
            {
            case LlExpressionPart.Function:
                switch (e.Name.ToString().ToUpper())
                {
                case "LEN":
                    if (e.ArgumentCount == 1)
                    {
                        e.Result = (String.Format("Length({0})", e.Arguments[0].ToString()));
                    }
                    e.Handled = true;
                    break;

                case "ATRIM$":
                    e.Result  = (String.Format("Trim({0})", e.Arguments[0].ToString()));
                    e.Handled = true;
                    break;

                case "LTRIM$":
                    e.Result  = (String.Format("LTrim({0})", e.Arguments[0].ToString()));
                    e.Handled = true;
                    break;

                case "RTRIM$":
                    e.Result  = (String.Format("RTrim({0})", e.Arguments[0].ToString()));
                    e.Handled = true;
                    break;

                default:
                    break;
                }
                break;

            default:
                break;
            }
        }
Пример #2
0
        protected override void OnTranslateFilterSyntax(object sender, TranslateFilterSyntaxEventArgs e)
        {
            base.OnTranslateFilterSyntax(sender, e);
            if (e.Handled)
            {
                return;
            }

            switch (e.Part)
            {
            case LlExpressionPart.Function:
            {
                switch (e.Name.ToString().ToUpper())
                {
                case "LEN":
                    e.Result  = String.Format("(LENGTH({0}))", e.Arguments[0]);
                    e.Handled = true;
                    break;

                case "EMPTY":
                    if (e.ArgumentCount == 1)
                    {
                        e.Result = String.Format("(LENGTH({0}) = 0)", e.Arguments[0]);
                    }
                    else
                    if ((bool)e.Arguments[1])
                    {
                        e.Result = String.Format("(LENGTH(LTRIM(RTRIM({0}))) = 0)", e.Arguments[0]);
                    }
                    else
                    {
                        e.Result = String.Format("(LENGTH({0}) = 0)", e.Arguments[0]);
                    }
                    e.Handled = true;
                    break;

                case "ROUND":
                    e.Result  = String.Format("(ROUND({0}::numeric,{1}))", e.Arguments[0], e.ArgumentCount == 2 ? e.Arguments[1] : "0");
                    e.Handled = true;
                    break;

                case "YEAR":
                    e.Result  = String.Format("(date_part('year',{0}))", e.Arguments[0]);
                    e.Handled = true;
                    break;

                case "MONTH":
                    e.Result  = String.Format("(date_part('month',{0}))", e.Arguments[0]);
                    e.Handled = true;
                    break;

                case "DAY":
                    e.Result  = String.Format("(date_part('day',{0}))", e.Arguments[0]);
                    e.Handled = true;
                    break;

                default:
                    break;
                }
                break;
            }

            default:
                break;
            }
        }
        protected override void OnTranslateFilterSyntax(object sender, TranslateFilterSyntaxEventArgs e)
        {
            base.OnTranslateFilterSyntax(sender, e);
            if (e.Handled)
            {
                return;
            }

            switch (e.Part)
            {
            case LlExpressionPart.Function:
                switch (e.Name.ToString().ToUpper())
                {
                case "YEAR":
                    e.Result  = String.Format("(EXTRACT(YEAR from {0}))", e.Arguments[0].ToString());
                    e.Handled = true;
                    break;

                case "MONTH":
                    e.Result  = String.Format("(EXTRACT(MONTH from {0}))", e.Arguments[0].ToString());
                    e.Handled = true;
                    break;

                case "DAY":
                    e.Result  = String.Format("(EXTRACT(DAY from {0}))", e.Arguments[0].ToString());
                    e.Handled = true;
                    break;

                case "MID$":
                    if (e.ArgumentCount == 2)
                    {
                        e.Result = (String.Format("(SUBSTRING({0} FROM {1}))", e.Arguments[0].ToString(), e.Arguments[1].ToString() + "+1"));
                    }
                    else
                    {
                        e.Result = (String.Format("(SUBSTRING({0} FROM {1} FOR {2}))", e.Arguments[0].ToString(), e.Arguments[1].ToString() + "+1", e.Arguments[2].ToString()));
                    }
                    e.Handled = true;
                    break;

                case "LEFT$":
                    e.Result  = (String.Format("(LEFT({0}, {1}))", e.Arguments[0].ToString(), e.Arguments[1].ToString()));
                    e.Handled = true;
                    break;

                case "RIGHT$":
                    e.Result  = (String.Format("(RIGHT({0}, {1}))", e.Arguments[0].ToString(), e.Arguments[1].ToString()));
                    e.Handled = true;
                    break;

                case "LEN":
                    e.Result  = (String.Format("(CHAR_LENGTH({0}))", e.Arguments[0].ToString()));
                    e.Handled = true;
                    break;

                case "EMPTY":
                    if (e.ArgumentCount == 1)
                    {
                        e.Result = String.Format("(CHAR_LENGTH({0}) = 0)", e.Arguments[0]);
                    }
                    else
                    if ((bool)e.Arguments[1])
                    {
                        e.Result = String.Format("(CHAR_LENGTH(LTRIM(RTRIM({0}))) = 0)", e.Arguments[0]);
                    }
                    else
                    {
                        e.Result = String.Format("(CHAR_LENGTH({0}) = 0)", e.Arguments[0]);
                    }
                    e.Handled = true;
                    break;

                case "ATRIM$":
                    e.Result  = String.Format("(TRIM({0}))", e.Arguments[0].ToString());
                    e.Handled = true;
                    break;

                case "LTRIM$":
                    e.Result  = String.Format("(TRIM(LEADING FROM {0}))", e.Arguments[0].ToString());
                    e.Handled = true;
                    break;

                case "RTRIM$":
                    e.Result  = String.Format("(TRIM(TRAILING FROM {0}))", e.Arguments[0].ToString());
                    e.Handled = true;
                    break;

                default:
                    break;
                }
                break;

            default:
                break;
            }
        }