如果update
方法不更新該字段,則可以在更新方法上使用pre
event handler。如果要監視在CustTable
表PriceGroup
場然後創建一個名爲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));
}
一個post
事件處理程序將無法正常工作,因爲orig()
將返回更改的記錄。 此外,如果記錄更新使用doUpdate
您的處理程序不被調用。
您也可以覆蓋上的aosValidateUpdate
,即使使用doUpdate
,也會調用aosValidateUpdate
。此方法始終在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
方法。 從方法的標題:
作爲由內核時在 表中的記錄進行更新稱爲回調,提供的內核已經建立監測 記錄在該表中。
開發人員可以設置內核插入一條記錄與所有 字段設置爲相關的值,其中包括現場日誌類型設置爲 EventUpdate的DatabaseLog內核表再打上一個給定 表更新。可以設置內核應在每次更新記錄或更新特定字段時回撥 .This 與調用和設置logUpdate的方式非常相似。此方法的電話號碼 將在更新記錄爲 的交易中。
該方法由alert rule通知系統使用。我會建議反對這一點,除非它是一個全球變化(如警報規則)。
預警規則可以延長as described here。
可能不是您的答案,但可以使用salesTable.orig()值檢測更改嗎? http://msdn.microsoft.com/en-us/library/xrecord.orig。aspx –
@ian_scho我不認爲它是有效的,因爲我正在尋找更新 – AnthonyBlake