There are other issues as well with hierarchical recordsets. For example, when you reconnect your hierarchical recordset to the database, only the parent is reconnected. You must reconnect the child recordsets separately. When updating a hierarchical recordset, you must also update parent and child levels separately. Furthermore, you must make sure that parent and children are updated in the correct order. Just let us mention two reasons for this:
As if this isn't enough, you shouldn't expect the ADO recordset UpdateBatch method to work at all for child recordsets, only for the parents; you can read more about this issue and what to do about it in Chapter 23, "Some Final Issues." Even worse: a specific hierarchical recordset might work as you'd expect when accessed within a process; the same recordset might not work when accessed across processes. Note that with MTS and COM+, clients normally call server objects across processes or even across computers. Therefore, an in-process test run isn't conclusive if your production environment is cross-process; if you believe it is, you're liable to get burned. To be safe, you should always test cross-process calls cross-process, just as you should test in-process calls in-process.