Hugo,
Moving the code to the init would be too late. If the data environment fails to load (producing an error that we need to trap) and we allow it to pass through to the init before trapping it, what happens when the bound controls on the form begin to init - more errors.
This technique worked great in VFP6 - Nothing on the form even attempts to initialize if the tables are not available. It simply tells the user someone else is using the system exclusively with a messagebox and the form is never loaded.
Thanks for confirming my pain.
Regards,
~Erik Folley