The best practice here is to create a table to hold the change logs. You can have a field, representing the table, another field to hold the field that was changed, a field for the old value and a field for the new value.
Then, you will use a pipeline to write the values into this table. If you'd like, you can make the table be a child of the table that was changed, that way you can look at a record and see the change logs right as an embedded report.
You will need to create a pipeline to watch for changes and write out the records. If you are tracking many different fields, then I suggest you just have one pipeline that triggers when any of those fields are changed, it would write out the change logs for each field even though any particular field was not changed and then have an overnight process which purge change log records where there was no change.
if you tackle the pipeline, then in order to obtain the previous value of the field thecsyntax would look like this
{{a.$prev.est_start_date}}
so you would dragging the field that you want tracked and then manually jam in $Prev. as in the example above
------------------------------
Mark Shnier (Your Quickbase Coach)
mark.shnier@gmail.com
------------------------------