Hola totote, Yo tengo BDS 2006, win Xp, dbExpress, ClientDataset y Firebird 2.1, he hecho algunas pruebas y me funciona todo muy bien.
El problema que tienes podría tratarse de que haya aplicaciones previas en algunas máquinas que podrían estar usando alguna versión distinta de dbExpress o Firebird.
Lo que yo he hecho es compilar estáticamente el proyecto, para esto he declarado en la clausula uses del proyecto "MidasLib" y "dbExpINT" ; con esto no hay necesidad de llevar dbxint30.dll ni tampoco hay necesidad de llevar y menos de registrar midasDll, y así podrán convivir pacíficamente aplicaciones que usen versiones diferentes de estas librerías.
Observa el siguiente ejemplo:
Código Delphi
[-]
program prClientDll;
uses
Forms, MidasLib, dbExpint,
UMain in 'UMain.pas' ,.....
procedure TPruebaServidor.ConexionBeforeConnect(Sender: TObject);
var
FileName: string;
begin
FileName := ChangeFileExt(GetModuleName(HInstance), '.ini'); if FileExists(FileName) then
Conexion.LoadParamsFromIniFile(FileName);
end;
Con GetModuleName obtienes el nombre de la aplicación y con HInstance te aseguras de que el evento funcione así muevas el Módulo de datos a una DLL ActiveX para hacer un servidor o lo que se te antoje ( si la aplicación es multipuesto).
Ahora si se tratara de una aplicación monopuesto sería mucho mas fácil al tratarse de un Servidor Embebed yo lo conecto con tan solo esto:
Código Delphi
[-]procedure TPruebaLocal.ConexionBeforeConnect(Sender: TObject);
begin
Conexion.Params.Values['Database'] := ExtractFilePath(Application.ExeName)+'\Prueba.fdb';
end;
El resto de parámetros de la conexión los configuro en tiempo de diseño. Y solo copio las DLLs del Fierebir Embebed (que son generalmente 4 si no necesitas algo especial) mas los archivos firebird.conf y Firebird .Msg en el directorio de la aplicación renombrando FbEmbed.dll por GDS32.dll y listo.
Esto a mí me funciona bién en varias maquinas en las que he hecho las pruebas, espero te sirvan de algo.
Saludos.