PXSelector 中的 BQL 以按开头进行过滤

pmf*_*ith 2 acumatica

我的 DAC 中有一个字段,我想在其中放置一个查找 SalesPersons 的选择器。我知道如何做到这一点:

        [PXSelector(typeof(SalesPerson.salesPersonCD)
               ,typeof(SalesPerson.salesPersonCD)
               ,typeof(SalesPerson.descr))]
Run Code Online (Sandbox Code Playgroud)

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

Gab*_*iel 5

除了创建自定义 BQL 运算符之外,您还可以通过使用 LIKE 运算符来实现“开头为”,并在末尾使用 % 通配符。您要过滤的 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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

[PXSelector(typeof(Search<SomeTable.someField, Where<SomeTable.someField,Like<Current<MyFilter.myFieldWildcard>>>>))]
Run Code Online (Sandbox Code Playgroud)