.Net defaults to disconnected recordsets, but VB6 doesn't. The recordset that you have opened in your code is a Dynamic recordset, which is incapable of operating without an open connection. The dynamic cursortype means that all changes to your recordset are posted immediately to the database. When you closed your connection, you couldn't do that anymore. Your errors suggest that the dynamic cursor looked for a connection when you tried to add a new record, and couldn't find one.
You might be interested to check whether your CursorLocation is still adUseClient. It shouldn't be; once you set the type to dynamic, the cursor has to be server side. Either your cursor is static or your location is server.
So, to make a disconnected recordset the properties have to be:
.CursorLocation = adUseClient
.CursorType = adOpenStatic 'This is automatic as a result of the previous line
.LockType = adLockBatchOptimistic
This last has to do with making batch changes on the disconnected recordset, and then when ready to post locking for the whole batch, posting the records, and then going through a conflict resolution procedure. Anyway, see if that helps you. It should.
A little more: if you just set your location to client-side, the type will default to static. It's the only cursortype that works client side. Kind of makes sense; you're working with a local "snapshot" of your data if it's on the client side.
Here is a simple explanation from back in 1999, when this was cutting edge stuff. :)