How to use multiple aseterror methods in a single representation class

Introduction

This ‘How-to’ provides information on how to use multiple ASETERROR methods in a single representation class.

The following development process demonstrates how to prevent the result returned from an ASETERROR call from being overwritten by a subsequent ASETERROR call when multiple ASETERROR methods are used in a single representation class.

The result returned from an ASETERROR call can be overridden by subsequent ASETERROR calls when multiple ASETERROR methods are used in a single representation class, if the result of each ASETERROR is not checked before control is returned to the supervisor and the ASTATUS actioned.

Example 1 – Prevents potential override

CODECODE CODE`
$METHODS
  Case CURPTH
    When ""
      Case ACTION
        When "AINSERT_CONTROL_AFTER"
          Gosub VALIDATE
       Endcase
  Endcase
Return
# -------------------------------
$VALIDATE
  If (ASTATUS = CST_AOK)
    Gosub VALIDATE_PROPERTY1
  Endif
  If (ASTATUS = CST_AOK)
    Gosub VALIDATE_PROPERTY2
  Endif
Return
````

Example 2 – Override a possibility

CODECODE CODE` $METHODS

Case CURPTH
When ""
Case ACTION
When "AINSERT_CONTROL_AFTER"
Gosub VALIDATE_PROPERTY1
Gosub VALIDATE_PROPERTY2
Endcase
Endcase
Return

ha$h -------------------------------
$VALIDATE_PROPERTY1

ASTATUS = fmet this.ASETERROR("", , CST_AERROR)
Return

$VALIDATE_PROPERTY2

ASTATUS = fmet this.ASETERROR("", , CST_AERROR)
Return
````

In this example:
* If the validation of the first property (PROPERTY1) fails, the error message is displayed and ASTATUS is set to CST_AERROR.

* If the validation of the second property (PROPERTY2) succeeds, no error is displayed and ASTATUS is then set to CST_AOK.

* The error on PROPERTY1 will not prevent the record from being saved to the database.