Sharing database connection between two COM objects/DLLs

I have a problem with sharing a database connection between two COM/ActiveX
objects.

What I am doing is that I just connect to a database
(DB2 or Paradox, it doesn't seem to matter) in the first object
and pass the Tdatabase handle to the second object from which I open a query
in order to test the connection.

It works fine on the first test application launch. The first object gets
connected,
the second object returns the right result, as many times as I want.
The problem occurs when I disconnect from the database and try to connect
again :
It connects OK, but the second object refuses the handle :
I get the message : "Invalid handle to the function".

More details :

The first object has two methods : connect and disconnect

function TMRHConnexion.Connect : OLE_HANDLE;
begin
  result := 0;
  Datamodule1 := TDatamodule1.Create(nil);
  result := OLE_HANDLE(Datamodule1.ConnectNow);  //ConnectNow opens the
tdatabase

//and get the TDatabase.handle
end;

function TMRHConnexion.Disconnect;
begin
  Datamodule1.Free;   //in the FormDestroy I close the database
end;
----------------
The second object has one method :

function TMRHTest.tester(HdBase: OLE_HANDLE): WideString;
begin
  result := '';
  datamodule2 := Tdatamodule2.Create(nil);
  Try
    With datamodule2 do begin
      Database1.Close;
      Database1.Handle := hdbidb(HdBase);  <== I get the message on that
point

      Try
        With query1 do begin
          Sql.Clear;
          Sql.Add('...
          Try
            Open;
            result := FieldByName('...').AsString;
          finally
            Close;
          end;
        end;
      except
        result := 'Query failed';
        exit;
      end;
    end;
  finally
    datamodule2.Database1.Handle := nil;
    datamodule2.free;
  end;
end;
-----
In the application to test the objects COM :
On the formCreate
  Creation of the first object
  creation of the second object
  HandleBase := MrhConn.Connect;   //handlebase : OLE_HANDLE;
  Label1.Caption := Objet2.tester(HandleBase);
It works Fine;
  Label2.Caption := Objet2.tester(HandleBase);
it works fine again;

Now I disconnect
  Objet1.Disconnect; //the disconnexion is correct, I have checked it
but when I try to connect again, I get the message "Invalid handle to the
function".
on the second line :
  HandleBase := MrhConn.Connect;   //handlebase : OLE_HANDLE;
  Label1.Caption := Objet2.tester(HandleBase);

If you have any idea of what's happening, please tell me...
Thanks in advance (and sorry for my English ! )