条件が満たされている間、エラー通知を表示して実行の継続を許可しません。
Error('announcement' | &var | character_expression [ ,ExceptionName ]
) [ IF condition ] [ ON triggering event ] ;
入力値の説明:
'announcement' (または、&var あるいは character_expression)
条件を満たす場合に表示する文 (文字列) です。変数または character_expression を使用する場合は、結果のタイプが Character の GeneXus コントロールです (それ以外の場合は、ナビゲーションレポートで通知されます)。
ExceptionName
Transaction オブジェクトが
ビジネスコンポーネントとして設定される場合は、ExceptionName パラメーターをエラーの ID として設定し、
ビジネスコンポーネントのエラー処理を解決できます。
condition
有効な論理条件です。
triggering event
GeneXus でトランザクションルールに使用できる事前定義済みのイベントです。これにより、ルールを実行する正確なタイミングを定義できます。
オブジェクト: Transaction
例 1
Customer
{
CustomerId*
CustomerName
CustomerLastName
CustomerAddress
CustomerPhone
CustomerBirthDate
}
Customer のルールは次のとおりです:
error('顧客名を入力してください。') if CustomerName.isempty();
error('顧客の姓を入力してください。') if CustomerLastName.isempty();
error('顧客は 18 歳以上である必要があります。') if CustomerBirthDate.age()<18;
error('顧客は削除できません。') if delete;
例 2
Customer トランザクションが
ビジネスコンポーネントとして構成されており、トランザクションに次のルールが定義されているとします:
error('顧客は 18 歳以上である必要があります。', 'CustomerMustBe18YearsOld') if CustomerBirthDate.age()<18;
ExceptionName パラメーターで参照される値は Messages SDT ( [ ID ] プロパティ) に基づく &Messages コレクション変数に入れられ、
GetMessages() メソッドを使用してロードできます。
サンプルコード:
&CustomerBc is a Customer variable
&CustomerBc.save()
If &CustomerBc.Fail()
&Messages = &CutomerBc.GetMessages()
If &Messages.Item(1).ID = 'CustomerMustBe18YearsOld'
....... //処理コード
ExceptionName パラメーターは識別子であるため、空白や次の特殊文字や関数は使用できません: / : ” | = < > |。
構文が正しくない場合はコンパイルエラーが表示されます:
xxx.cs(yy,yy): error CS0103: the name 'pushError' does not exist in the actual context.
例 3
同じ Customer トランザクションを使用して次のルールを定義できます:
Error(&ReturnedText) if ProcedureCheck(&ReturnedText);
前の定義は有効ですが、変数 &ReturnedText がプロシージャーの入力パラメーターと見なされることを考慮する必要があります。ルールは、変数が割り当てられた場合にのみトリガーされます (たとえば別のルールの出力変数である場合)。
注: 条件に「if delete」と指定した場合を除いて、トランザクションからレコードを削除するときにルールは実行されません。
トランザクションルール