Couple different ways potentially depending on your structure, assuming that its just a simple text dropdown for Topic and not a table setup, I can think of (2) that would be the easiest.
Option 1: Use a Pipeline when the new record is saved and check to see if there was a prior record checked with coaching and the same topic. You can modify the query to match a specific person if these are for individuals, or whatever else you need. If you find a match, update the date on the new record. This will only work after the new record is saved, but same end result.
Option 2: Use a formula query to search for other records in the table for the same topic / coaching session / other values and get the value of the prior date. The query would search once all of your fields are filled out, and if it returns a value - you can have a form rule that copies the value from your query into the date field. The catch with this one is that you'll have to make sure you account for finding the most 'recent' date, in the event that you have 2 or more prior events, the query will return all of the dates that match. You can pluck out the first but would need to confirm/make sure that's the right date. One option in the formula would be to do something like:
Max(
ToDate(Part($queryResult, 1,";")),
ToDate(Part($queryResult, 2,";")),
ToDate(Part($queryResult, 3,";")),
ToDate(Part($queryResult, 4,";")),
...
)
Just cover enough iterations of the result to find the Max that way.
------------------------------
Chayce Duncan
------------------------------