Hola a todos.
Ahora mismo por necesidad del cliente, quiere tener varias ventanas abiertas de cliente, y en cada ventana quiere tener un cliente distinto. En esta situación no se pueden compartir los objetos TTable en un solo Datamodule, hay que poner las tablas y los datasources sobre el mismo Form, abrirlos al crear la ventana y cerrarlos al salir. También se ha comentado alguna vez el hecho crear un datamodule por cada Form que se tenga, así se independiza el acceso a dato de la interfaz (esto le gusta mucho a
román 
) para mí es demasiado.
Lo cierto es que uso un Datamodule general para configurar la conexión, objeto database, tablas y consultas que si se comparten con varias ventanas, (por ejemplo un listado de clientes ordenado alfabeticamente, etc), y todos ellos si se mantienen abiertos durante toda la ejecución del programa.
La rutina que abre los datasets:
Código Delphi
[-]
with dtm do
for i := 0 to ComponentCount-1 do
if components[i] is TDBDataset then
with TDBDataset(components[i]) do
Open;
Tanto el TTable como los TQuerys descienden de TDBDataset del BDE, por tanto tienen los métodos Open y Close. De hecho, el TTable no implementa el método Open (ni lo sobrescribe), sino que lo hereda de sus antecesores.
Ahora mismo trabajo con Firebird y MDO, no uso el BDE ni tampoco objetos TTable sino MDODatasets, pero bueno, para que se entienda lo puse así.
Saludos