Friday, July 3, 2009

Physics behind the data source refresh(), reread() and research() method

.refresh() will not reread the record from the database. It basically
just refreshes the screen with whatever is stored in the form cache.

.reread() will only re-read the CURRENT record from the DB so you
should not use it to refresh the form data if you have added/removed
records. It's often used if you change some values in the current
record in some code, and commit them to the database using .update()
on the table, instead of through the form datasource. In this case
.reread() will make those changes appear on the form.

.research() is probably what you want. This will rerun the existing
form query against the datasource, therefore updating the list with
new/removed records as well as updating existing ones. This will
honour any existing filters and sorting on the form.

.executeQuery() is another useful one. It should be used if you have
modified the query in your code and need to refresh the form. It's
like .research() except it takes query changes into account.

In general, you only need to use one of these in any specific
circumstance.

No comments: