Ricardo, eu tive problema semelhando ao utilizar o componente TSQLDataSet. Dentro de uma transação, se usasse um TSQLDataSet para fazer um SELECT ele dava commit na transação automaticamente e aí dava pau na continuidade do código. Passei a usar TSQLQuery.
Lembrando estou uso controle de transação manual, não uso TClientDataSet. Luciano C. Simões