我尝试使用 system.form_status 状态,但是当我在更改一些文本或我的列表项后检查它时,system.form_status 没有变化,我只收到“查询”消息但我必须收到“已更改”消息。
那么我该如何解决我的问题呢?有什么前提吗?
我尝试使用 system.form_status 状态,但是当我在更改一些文本或我的列表项后检查它时,system.form_status 没有变化,我只收到“查询”消息但我必须收到“已更改”消息。
那么我该如何解决我的问题呢?有什么前提吗?
当您修改基表项(在基表块中)时,状态应变为 CHANGED。如果您修改一个项目并且状态没有改变,它必须是一个控制项目。
如果控制项被修改,记录&块&表单状态将保持不变。
解决此问题的一种方法是向项目添加触发器 (WHEN-VALIDATE-ITEM) 以强制更改记录状态。在触发器中,将记录状态设置为“已更改”。您可能还需要一些逻辑来处理新记录,例如:
IF GET_RECORD_PROPERTY(NAME_IN ('SYSTEM.TRIGGER_RECORD'),
NAME_IN ('SYSTEM.TRIGGER_BLOCK'),
STATUS) = 'QUERY' THEN
Set_Record_Property (NAME_IN ('SYSTEM.TRIGGER_RECORD'),
NAME_IN ('SYSTEM.TRIGGER_BLOCK'),
STATUS,
CHANGED_STATUS);
ELSIF GET_RECORD_PROPERTY(NAME_IN ('SYSTEM.TRIGGER_RECORD'),
NAME_IN ('SYSTEM.TRIGGER_BLOCK'),
STATUS) = 'NEW' THEN
Set_Record_Property (NAME_IN ('SYSTEM.TRIGGER_RECORD'),
NAME_IN ('SYSTEM.TRIGGER_BLOCK'),
STATUS,
INSERT_STATUS);
END IF;
或者(这可能是更好的方法),在您的 WHEN-VALIDATE-ITEM 触发器中,将同一记录中的数据库项的值设置为某个值(根据此处的其他答案)。这将自动正确设置记录状态。