为什么 Navision 页面中的过滤器组 (-1) 或页面级别的过滤不起作用

问题描述

使用 OR 条件进行过滤(使用 FILTERGROUP(-1))是否可能在页面级别不起作用? 如果是这样,为什么它不起作用?

我是 MS-Navision 的新手,我试图了解它的下划线编程。 在 MS-Navision Cronus-AG DB 中,我基于客户表创建了一个页面。在客户表中,我添加了两个字段(Datefield DateCodeField 整数)。创建的页面应仅显示 Datefield OR codefield 为空的客户。我使用了两个名为

的空变量
date Date 
codefield Code

我尝试在 OnopenPage-Trigger 中使用以下代码

 CLEAR(date);
 CLEAR(c20);
 
 FILTERGROUP(-1);
 SETFILTER(DateField,'%1',date);
 SETFILTER(CodeField20Old,c20);
 FILTERGROUP(0); // tried to remove this line,still not working

但是没有设置过滤器,尤其是在 OR-Filter 条件下。但是,如果我使用在 Codeunit 中剪下的相同代码,它就会以正确的方式工作。如果我将 FILTERGROUP(-1) 更改为 FILTERGROUP(2),则会设置过滤器(使用 AND 条件)。

谁能解释一下这种行为?

解决方法

虽然这可能不是您问题的直接答案,但为了让您的过滤记录显示在您的页面中,您需要标记每一行,然后只显示标记的行:

FILTERGROUP(-1);
SETFILTER(DateField,'%1',date);
SETFILTER(CodeField20Old,c20);

IF FindSet() then
  repeat
    Mark(true);
  until Next() = 0;

FILTERGROUP(0);
MarkedOnly(true);