【问题标题】:BQL in PXSelector to filter by a Starts WithPXSelector 中的 BQL 以开头为筛选
【发布时间】:2016-09-27 03:01:34
【问题描述】:

我的 DAC 中有一个字段,我想在其中放置一个查找销售人员的选择器。我知道该怎么做:

        [PXSelector(typeof(SalesPerson.salesPersonCD)
               ,typeof(SalesPerson.salesPersonCD)
               ,typeof(SalesPerson.descr))]

我的问题是我想根据 SalesPerson CD 的前三个字符过滤此选择器,即 StartsWith "SSR" 或类似的东西。我知道您可以使用 Search 命令在选择器中使用 BQL,并且我知道如何设置常量类,但我不确定按开头字符过滤的语法。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    除了创建自定义 BQL 运算符外,您还可以使用 LIKE 运算符实现“Starts with”,末尾带有 % 通配符。您要过滤的 BQL 字段可能是在 get 访问器中带有自定义代码的 DAC 属性,它采用您的用户输入的字段并在末尾添加通配符,如下所示:

            public abstract class myFieldWildcard : PX.Data.IBqlField { };
            [PXString(30, IsUnicode = true)]
            public virtual String MyFieldWildcard
            {
                [PXDependsOnFields(typeof(myField)]
                get
                {
                    return MyField + PXDatabase.Provider.SqlDialect.WildcardAnything;
                }
            }
    

    然后您就可以将该字段用作PXSelector 属性的一部分:

    [PXSelector(typeof(Search<SomeTable.someField, Where<SomeTable.someField,Like<Current<MyFilter.myFieldWildcard>>>>))]
    

    【讨论】:

    • 非常感谢,伙计们! ;D
    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多