He encontrado dos soluciones al problema, las expongo para ver que opinais.
1.- Puesto que utilizo una base de datos fisica (Access) compruebo que exista.
Código Delphi
[-]procedure TdmMatTaller.adoConnectionWillConnect(Connection: TADOConnection;
var ConnectionString, UserID, Password: WideString;
var ConnectOptions: TConnectOption; var EventStatus: TEventStatus);
var cs : WideString;
begin
cs := Copy(ConnectionString, Pos( WideString('Data Source='), ConnectionString)+12, length(ConnectionString));
cs := Copy( cs, 0, Pos(';', cs)-1);
if not fileexists( cs) then abort;
end;
2. Esta segunda opcion es la que voy a implementar ya que me parece mas elegante y no depende de un fichero o ruta.
Código Delphi
[-]
TdmMatTaller = class(TDataModule)
private
_lcreatingdatamodule : Boolean;
public
constructor Create(AOwner: TComponent); override;
end;
constructor TdmMatTaller.Create(AOwner: TComponent);
begin
_lcreatingdatamodule := true;
inherited create( AOwner);
_lcreatingdatamodule := false;
end;
procedure TdmMatTaller.adoConnectionBeforeConnect(Sender: TObject);
begin
if _lcreatingdatamodule then abort;
end;