我需要一些帮助,使用OR表达式在两个不同的字段中过滤关键字。见下面的例子。
我需要使用OR在NAV中搜索John的FirstName和ShortName字段。
CustomerInterface.ClientInterface_Filter[] filters =
{
new CustomerInterface.CustomerInterface_Filter(),
new CustomerInterface.CustomerInterface_Filter(),
};
filters[0].Field = CustomerInterface.CustomerInterface_Fields.FirstName;
filters[0].Criteria = "John";
filters[0].Field = CustomerInterface.CustomerInterface_Fields.ShortName;
filters[0].Criteria = "John";
CustomerInterface.CustomerInterface[] response = service.ReadMultiple(filters.ToArray(), null, 0);
如何过滤它?感谢。
答案 0 :(得分:0)
可以在NAV代码中使用构造FILTERGROUP(-1) - 它将作为OR子句有效地工作。
SearchString := 'John';
FILTERGROUP(-1);
SETFILTER("First Name", SearchString);
SETFILTER("Short Name", SearchString);
IF FINDSET THEN REPEAT
...
UNTIL NEXT = 0;
FILTERGROUP(0);
它实际上是NAV网络客户列表页面中搜索框功能背后的机制。
因此,您可以在NAV中创建自定义代码单元功能,以过滤掉并返回结果。不确定是否可以从Web服务消费者方面做同样的事情。
此博客文章中的更多详细信息: https://dynamicsuser.net/nav/b/vanvugt/posts/filtergroup-1
过滤器组-1仅在MSDN文档中提及,但没有任何详细信息: https://docs.microsoft.com/en-us/dynamics-nav/filtergroup-function--record-