I refer you to the classic article about how to refresh data on the datasource. It's an essential read. Have you tried just reloading data of the selected record, and then updating the controls on the form?
Only occasoinally have I had to resort to saving the record id before refreshing a form, and searching for the record again afterwards (slow).