条件が満たされている間、エラー通知を表示して実行の継続を許可しません。
Error('announcement' | &var | character_expression [ ,ExceptionName ] ) [ IF condition ] [ ON triggering event ] ;
入力値の説明:
'announcement' (または、&var あるいは character_expression)
条件を満たす場合に表示する文 (文字列) です。 変数または character_expression を使用する場合は、結果のタイプが Character の GeneXus コントロールです (それ以外の場合は、ナビゲーションレポートで通知されます)。
ExceptionName
トランザクションがビジネスコンポーネントとして設定される場合は、ExceptionName パラメーターをエラーの ID として設定し、ビジネスコンポーネントのエラー処理を解決できます。
condition
有効な論理条件です。
triggering event
GeneXus でトランザクションルールに使用できる事前定義済みのイベントです。これにより、ルールを実行する正確なタイミングを定義できます。
例
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;
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.
同じ Customer トランザクションを使用して次のルールを定義できます:
Error(&ReturnedText) if ProcedureCheck(&ReturnedText);
前の定義は有効ですが、変数 &ReturnedText がプロシージャーの入力パラメーターと見なされることを考慮する必要があります。ルールは、変数が割り当てられた場合にのみトリガーされます (たとえば別のルールの出力変数である場合)。
注
開発者が条件に「if delete」と指定した場合を除いて、トランザクションからレコードを削除するときにルールは実行されません。
適用範囲
オブジェクト Transaction
参考情報
トランザクションルール
|