In my experience, any time you have a failure in an OBDC connection, every request following it, even if clearing the error, still return errors, until the thread using it is terminated and restarted, where it will be fine, until the next time. I've experienced this same behavior between Access, Excel, Outlook, As400 clients, VB apps, Linked Servers, Crystal Reports, Etc...
The way I've always dealt with it, was to monitor the connection for errors, and reset the app on error. Sometimes it was a batch command to kill the task and start it again activated by a log. Sometimes we were able to write it into our app. If someone else has a better way, I'd be greatly interested as well, as this has been one of those ongoing encounters for me as well.