如何在Dynamics NAV Web服务中使用OR表达式进行过滤?

时间:2018-06-01 05:52:03

标签: filter navision dynamics-nav

我需要一些帮助,使用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);

如何过滤它?感谢。

1 个答案:

答案 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-