I developed this after a many hours of trying to find the easiest, most portable way to validate fields. Nothing works as well as this one!
To use this formula, add a field to your form called FE. Make it "Computed for Display" with the value as FE. This will be a display field for your validation error message. Make it the color red, green, or something that stands out when the form returns validation errors.
Code: FIELD FE := FE; F1 := FIELD1NAME; F2 := FIELD2NAME; F3 := FIELD3NAME; F4 := FIELD4NAME; F5 := FIELD5NAME; ErrorMessage:= "There was an error in your form: "; REM "ADD THIS CODE TO YOUR SUBMIT OR SAVE BUTTON RIGHT BEFORE THE REST OF YOUR CODE. "; REM "IF YOU HAVE ANY FIELD DECLARATIONS IN YOUR CURRENT CODE, ADD THEM TO THEM UP AT TOP."; REM "FIELD DECLARATIONS SHOULD ALWAYS BE AT THE TOP."; REM " REFRESH FIELDS"; @Command([ViewRefreshFields]); REM "THIS FORMULA VALIDATES FIELDS THEN PROCESSES FORM ONCE THE FIELDS ARE CORRECT."; REM ; REM "CHECK IF FIELD 1 IS VALID"; a:=@If( F1="" ;@NewLine+ "Update Field One."; "" ); REM "CHECK IF FIELD 2 IS VALID"; b:=@If( F2="" ;@NewLine+ "Update Field Two."; "" ); REM "CHECK IF FIELD 3 IS VALID"; c:=@If( F3="" ;@NewLine+ "Update Field Three."; "" ); REM "CHECK IF FIELD 4 IS VALID"; d:=@If( F4="" ;@NewLine+ "Update Field Four."; "" ); REM "CHECK IF FIELD 5 IS VALID"; e:=@If( F5="" ;@NewLine+ "Update Field Five."; "" ); ems := @Trim(a+b+c+d+e); @If( ems = "" ; @Success ; @Do(@SetField("FE";ErrorMessage+ems); @Return(""))); REM "SAVE DOCUMENT OR RUN THE REST OF THE SUBMIT FORMULA HERE"; REM "ADD THE REST OF YOUR CODE HERE"; @PostedCommand([FileSave]); REM "AFTER PROCESSING THE DOCUMENT SEND THEM TO A CONFIRMATION PAGE. "; @PostedCommand([Compose];"ConfirmPage")
This was first published in April 2001