Creo que lo que está ocurriendo es lo siguiente: La aplicación originalmente está funcionando para un solo PC y la base de datos está sobre ese PC. En el modulo de datos el componente de conexión está "alambrado" a esa base de datos y además la conexion ibdatabase1 está abierta en tiempo de diseño. Cada una de las tablas que están asociadas a está conexión también está abierta. La aplicación se compila, se ejecuta y todo funciona a la perfección.
Cuando se modifica la aplicación para funcionar en red se le adiciona el código para que en tiempo de ejecución establezca la conexión a la base de datos:
Código Delphi
[-]
BasedeDatos := ElIniFile.ReadString('BD','Path','');
pero la base de datos sigue abierta en tiempo de diseño, por tanto, cuando se intenta ejecutar la instrucción anterior obtenemos el mensaje: Cannot perform operation -- db is currently open.
Debes cerciorarte que la base de datos esté cerrada en tiempo de diseño, o sino va a intentar conectarse a una base de datos en el PC local tan pronto inicie la aplicación y antes de que se ejecute el código que configura la conexión.
Por otro lado cuando aplicas la sugerencia de casimiro
Código Delphi
[-]
ibdatabase1.Close;
ibdatabase1.DatabaseName:=BasedeDatos;
ibtablaclientes.Active:=true;
El mensaje de error lo obtiene sobre la tabla
ibtablaclientes y no sobre la base de datos
ibdatabase1. Sugiero que pruebes lo siguiente (verificando previamente que la base de datos no está abierta en tiempo de diseño):
Código Delphi
[-]
ibdatabase1.Close;
ibdatabase1.DatabaseName:=BasedeDatos;
ibdatabase1.open; ibtablaclientes.Active:=true;
Quizás esto no solucione definitivamente el problema pero nos puede proporcionar un mensaje de error que nos acerque más a la solución.