Caro Colega Elieser,
Para um motivo bem simples:
Experimente criar um relatorio no crystal baseado em uma tabela.
Após criar o relatorio experimente mover qualquer campo de sua posição original.
Tente abrir novamente o relatorio do crystal, com certeza vai dar erro.
Qdo você cria um relatorio, ele armazena a estrutura da tabela.
Após isto qualquer modificacao vai gerar um erro.
Agora imagine ter que controlar isso tudo no braço! sem codigo... impossivel.
Com o DAO eu fazia esse controle utilizando orderposition, mas no ADO foi retirado.