问题描述
使用 OR 条件进行过滤(使用 FILTERGROUP(-1)
)是否可能在页面级别不起作用?
如果是这样,为什么它不起作用?
我是 MS-Navision 的新手,我试图了解它的下划线编程。
在 MS-Navision Cronus-AG DB 中,我基于客户表创建了一个页面。在客户表中,我添加了两个字段(Datefield Date
和 CodeField
整数)。创建的页面应仅显示 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);