Mike,
I think you still didn't get what our understanding is. So perhaps a question first:
Are we dealing with one or two forms?
Thisform is thisform. As the code you use to enable the button and to close the form is in the same method, it is adressing the same. So you enable a button that is on a form you release in the next moment. If this is meant to enable a button on another form, you would need to enable the button in that form.
In the simplest way you make the form you release modal, then calling that form from the first form with the button would keep it in a wait state and after you release the form we talk about here, you return to the line after the DO FORM and then you can enable the button.
If you have such interdependencies, you may also pass the form reference thisform from the calling form to the called form DO FORM ... WITH THISFORM. This arrives as a parameter in the init of the called form and you can save that parameter into a form property to make use of it when you successfully save.
Or you DO FORM ... TO Variable, which works with modal forms again, and then you can return a value in the Unload() event of the called form, eg you can return if the save succeeded or not.
You may also determine the success of the save by seeking the appointment needed for the invoice. That makes it easier in terms of dependencies of the forms themselves. The appointment doesn't need to report it's success to the invoice form, the invoice form just looks up, if the record it needs to relate the invoice to exists or not.
Bye, Olaf.