Arguably the largest new feature that 19.6 brings to the table is built-in support for transactions. Transactions are an excellent way to bundle sets of actions together, executing them or reverting them as a whole instead of a several smaller pieces. They are typically used for the mass creation, editing, or deletion of records where you want to ensure the entire set of data is valid, and if it is not, discarding the entire transaction as if the script itself never ran. While Filemaker has had the capability of performing transactions via scripts, in the past it involved manually setting up a transactional environment and database tables dedicated to transactions; to help with performing this extremely useful action, Claris has added three script steps explicitly for use with transactions. These script steps are as follows:
- Open Transaction: This step initiates the start of the transaction. Any changes in database records made after this step will be stored inside the transaction and will not be committed or reverted until the relevant transaction script step is called. If the script ends before reaching the commit step, it will automatically revert the transaction. You can make as many changes to the database as you want inside a single transaction, but keep in mind it will all be reverted unless explicitly committed via the ‘Commit Transaction’ script step.
- Commit Transaction: Ends the current transaction. Regardless of whether the user chooses to keep or discard the transaction, this script step must be called to close the transaction environment.
- Revert Transaction: Discards any data changes the transaction made. You can set this script step to only activate based on specific conditions, and you can also optionally have it throw an error code and message in the script if it activates. Once this script step is called, it ignores any other lines of the script between itself and the ‘Commit Transaction’ script step and runs that step next.
Related to the addition of transactions, the Get (TransactionOpenState) function can be used to check if the script is currently inside a transaction environment or not. It returns 1 (True) if it is, and 0 (false) if not. This can be useful for calling several different transactions in one script, as well as for error handling.
If you would like to read more about transaction scripts, check out our Transaction Scripts article, which includes a download file and demo video.
The new Set Dictionary script step allows users to specify both the dictionary and language for the current instance of the file. This can be useful for systems or layouts used by non-English users, but keep in mind that it does not translate any pre-existing text into the language, but rather checks the spells of text in the system against the language specified. When using the step, it looks something like this:
Set Dictionary [ Spelling Language: UK English; User Dictionary: "User_uk.upr" ]
If you want to use a dictionary other than the default for the language chosen, then it must be provided from a file source–either locally or from a container.
Other New Functions
In addition to the new Dictionary function, several other functions have been added or updated for compatibility with Transactions. They are as follows:
- Get (CurrentTimeUTCMicroseconds) – This new function returns the current time in UTC format to the nearest microsecond.
- Get (LastErrorLocation) – This new function returns the location of the error that gets returned by Get (LastError), and is compatible with transactions. If an error occurs within a transaction, then this will return the location of the ‘Commit Transaction’ script step.
- The function Get (LastExternalErrorDetail) has been renamed to Get (LastErrorDetail) and now returns error details for a transaction if it is called after exiting one. This function’s use–returning the text of an error, including the script name, the script step that caused the error, and the line number of the step–is unchanged from how it has been in prior FileMaker versions.
Disable context menu for interactive containers
Users with full access can disable the context menu for containers that are interactable via the Inspector in layout mode. With this option enabled, non-Admin users will not be able to access the context menu for containers by right-clicking, thus limiting their access to edit the field.
Delete Cached Temp Files
Temp files are typically deleted when the user closes the file, but if you need to remove them from your system sooner, you can manually delete them from the Preferences menu. In “Preferences” > “General”, a new option has been added under “Application” to “Delete cached temp files”.
Claris FileMaker Pro 19.6 provides more innovative improvements that will make development more efficient. We are excited to use these new updates in Claris FileMaker 19.6 to continue to help you build custom applications. Contact DB Services at any time if you have questions or needs with Claris FileMaker!