I think that you will find that the database-name is hard-coded in the report (if you open the .rpt file in something like NOTEPAD you will probably be able to find a reference to the database-name in question).
I would suggest attempting to set the logon information for each of the report database tables - using something like the following (as I do in Delphi) :
for tpI := 1 to (CRReport.Database.Tables.Count) do
begin
CRReport.Database.Tables[tpI].SetLogOnInfo(server-name, database-name, user-name, password);
end;
Alternatively in place of this combination I think you can indicate the ODBC connection name in place of the server-name (so use combination of ODBC name, database-name, user-name + password).
You may also need to set the location for each of the report tables - using something like the following :
for tpI := 1 to (CRReport.Database.Tables.Count) do
begin
if (CRReport.Database.Tables[tpI].Name = 'Table-name being looked for') then
begin
CRReport.Database.Tables[tpI].Location := database-name + '.dbo.' + table-name;
end;
// Do checks for other tables to set location for...
end;
I hope this helps in some way ...
Steve