SETFILTER - 不等于(<>)不工作NAV 90

时间:2016-05-23 12:58:58

标签: microsoft-dynamics-nav

我一直在尝试使用setfilter,但似乎无法正常工作

FOR i := 1 TO ARRAYLEN(ItemGroupFilter) DO BEGIN
  IF i <> ARRAYLEN(ItemGroupFilter) THEN BEGIN
    IF  ItemGroupFilter[i] <> '' THEN 
      IF ItemGroupString = '' THEN
        ItemGroupString := '<>' + ('%' + FORMAT(i))
      ELSE
        ItemGroupString := ItemGroupString + ('|%' + FORMAT(i))
    ELSE
      ItemGroupString := ItemGroupString;
  END ELSE BEGIN
    IF ItemGroupFilter[i] <> '' THEN
      IF ItemGroupString = '' THEN
        ItemGroupString := '<>' + ('%' + FORMAT(i))
      ELSE
        ItemGroupString := ItemGroupString + ('|%' + FORMAT(i))
    ELSE  
      ItemGroupString := ItemGroupString;
  END;
END;

Item.RESET;
Item.SETFILTER("Item Group",ItemGroupString,ItemGroupFilter[1],ItemGroupFilter[2],ItemGroupFilter[3],ItemGroupFilter[4]);

因此,只有第一个ItemGroupFilter [1]正在执行此任务。从OR(|)开始,它不起作用

Message Values:
    ItemGroupString = '<>%1|%2|%3|%4'
    ItemGroupFilter[1] = '1'
    ItemGroupFilter[2] = '2'
    ItemGroupFilter[3] = '3'
    ItemGroupFilter[4] = '4'

1 个答案:

答案 0 :(得分:2)

找到解决方案。 SETFILTER for&lt;&gt;应该如下:

SETFILTER('<>%1&<>%2&<>%3&<>%4','1','2','3','4')

所以我上面的ItemGroupString变量由

组成
ItemGroupString = '<>%1&<>%2&<>%3&<>%4'

快乐的节目! :)