ここでは、
Transaction オブジェクトのルールに関連する一般的な構文について説明します。
<RuleName> [ if <condition> ] [ on <event1>,...,<eventN> ] [ level <Att1>,...,<AttN> ] [ dependencies <Att1>;...;<AttN>|<&var1>;...;<&varN> ] ;
構文の表記規則の表示
入力値の説明:
RuleName
トランザクションルールを指定します。
condition
ルールをトリガーするために満たす必要のある条件を示す Boolean エクスプレッションです。論理演算子 (and、or、not) を使用できます。
event1,...,eventN
イベント、または "," 区切りのイベントのリストです。有効な値は、
AfterInsert、AfterUpdate、AfterDelete、
AfterValidate、
AfterComplete、
AfterLevel、
BeforeValidate、BeforeInsert、BeforeUpdate、BeforeDelete、および BeforeComplete です。
Att1,...,
AttN
項目属性、または "," 区切りの項目属性のリストです。ルールを適用するトランザクションの
レベルを決定します。セクションのレベルを指定しないと、第 1 レベルに適用するものと見なされます。
Att1,...,
AttN |
&var1,...,&varN
項目属性 (または変数)、または ";" 区切りのリストです。それらの項目属性 (変数) を受け入れたときにルールをトリガーすることを決定します。これは、
Dependencies 節が、値が取得されるとルールがトリガーされる項目属性や変数を示すために使用されるためです。
オブジェクト: Transaction
トランザクションのルールの構文は、次の 2 つの部分に論理的に分けることができます:
条件および
トリガーするイベント。
条件のセクションは、ルールを実行するために評価する必要のあるエクスプレッションを指定するのに使用します。
トリガーするイベントのセクションはルールをトリガーするイベントを示し、このイベントは
on および
level セクションに関連付けられています。
次の
Transaction オブジェクトがあるとします:
Client
{
ClientId*
ClientName
ClientType
ClientBalance
Phone
{
ClientPhoneId*
ClientPhoneNumber
ClientPhoneDescription
}
}
次に、この構文の使用例をいくつか示します:
AfterValidate (BeforeInsert と同じ) イベントで、ある値を割り当てる:
ClientType = 1 If Insert On AfterValidate;
ClientType = 1 On BeforeInsert;
AfterInsert または AfterUpdate イベントでの
プロシージャーの呼び出し:
Proc(ClientId) On AfterInsert, AfterUpdate;
最大値に達した場合のルールエラーの実行:
Error('Maximum reached') If ClientBalance > &Max On AfterValidate;
AfterInsert または AfterDelete イベントでのログプロシージャーの呼び出し:
Proc1(ClientId, &Mode) On AfterInsert, AfterDelete;
ClientPhoneId 項目属性に関連付けられたレベルの後のプロシージャーの呼び出し:
Proc2(ClientId) On AfterLevel Level ClientPhoneId;
トランザクションルール
トランザクション内のルールをトリガーするイベント