Capturing a validation error
I'm trying to accomplish with a formula something I know can be done with an involved script. I'm concatenating parts of two fields, depending on length, to auto-fill a third field.The formula is attached to that third field. Here's the first stage of my formula. The calculation is "Case" because I know there will be several other tests and results:
Let ( [ Q1 = Length(Last Name) ≥ 4 ; R1 = Left ( Last Name ;4 ) & Left ( First Name;1 )] ;
Case ( Q1 and EvaluationError(R1) ≠ 504; R1; "ALERT" ))
The issue is with EvaluationError and when it evaluates. The field in question is set to be unique and not empty as well as to consist of exactly 5 characters. It seems this calculation should return error 504 if "R1" is a non-unique value. Using Data Viewer I see it always returns "0". When the formula evaluates and ends up creating a non-unique string I get the standard Filemaker message.When does "R1" evaluate? I would assume, in runtime, before EvaluationError.
Lately I've seen many elegant formulae that obviate the need for a script and the two lines above are just a test of "EvaluationError" before I write the whole thing (my attempt at the aforementioned elegant formula!). Error 504 is a runtime error and shouldn't necessitate EvaluationError being wrapped in Evaluate. Oh, the calculation works fine except for the duplicates issue.
I suspect I'm missing something about EvaluationError and I can't seem to find much on the subject.