If the update
方法不会更新字段,您可以使用pre
事件处理程序 http://msdn.microsoft.com/en-us/library/gg839762.aspx关于更新方法。如果您想监控PriceGroup
场上的CustTable
表然后创建一个名为的类CustTableEventHandler
包含这个方法:
public static void preUpdateHandler(XppPrePostArgs _args)
{
CustTable custTable = _args.getThis();
if (custTable.PriceGroup != custTable.orig().PriceGroup)
info(strFmt("Change price group from '%1' to '%2'", custTable.orig().PriceGroup, custTable.PriceGroup));
}
A post
事件处理程序将不起作用,因为orig()
将返回更改的记录。
另外,如果使用更新记录doUpdate
你的处理程序没有被调用。
您还可以覆盖aosValidateUpdate
on CustTable
,即使这样也被称为doUpdate
用来。此方法始终在 AOS 服务器上运行。
public boolean aosValidateUpdate()
{
boolean ret = super();
if (this.PriceGroup != this.orig().PriceGroup)
info(strFmt("Change price group from '%1' to '%2'", this.orig().PriceGroup, this.PriceGroup));
return ret;
}
另一种选择是对Application.eventUpdate
方法。
从方法的标题中:
用作回调,当记录在
表已更新,前提是内核已设置为监视
该表中的记录。
开发人员可以设置内核来回调给定的更新
通过将一条记录插入 DatabaseLog 内核表来插入所有表
字段设置为相关值,其中包括字段 logType 设置为
事件更新。可以设置内核应该回调
每当更新记录或更新特定字段时。这
与 logUpdate 的调用和设置方式非常相似。电话
该方法的执行将在记录为的事务中
更新。
该方法由警报规则 http://technet.microsoft.com/en-us/library/aa498338.aspx通知系统。我建议不要这样做,除非它是全局更改(如警报规则)。
警报规则可以扩展如此处所述 http://msdn.microsoft.com/en-us/library/aa673670.aspx.