В моем приложении (Win32) я отображаю Crystal Reports.
Я установил информацию для входа во время выполнения. Однако Crystal любезно решила ссылаться на имя базы данных под несколькими разными именами, в зависимости от того, как соединяется отчет. Например, если отчет подключается через соединение ODBC, он называется «Источник данных», но если он подключается напрямую, то он называется «Сервер».
Конечно, мы не знаем до времени выполнения, какой отчет будет вызываться.
В настоящее время я работаю над этой проблемой, проглотив исключение и попробовав альтернативный метод, например:
procedure TCrystalReporter11.SetLoginInfo(const username, password,
server : string);
var
i : integer;
begin
//set user name and password
//crystal only accepts these values if they are CONST params
for i := 1 to FRpt.Database.Tables.Count do begin
FRpt.Database.Tables[i].ConnectionProperties.Item['User ID'] := username;
FRpt.Database.Tables[i].ConnectionProperties.Item['Password'] := password;
try
{
Some reports use direct connections, and others use an ODBC Data Source.
Crystal XI uses a different label to refer to the database name in each
method.
I don't know how to determine in advance which method is being used, so:
First, we try the direct connection.
If that fails, we try the "data source" method.
Reference: "Crystal Reports XI Technical Reference", pages 41 thru 46;
"Common ConnectionProperties"
}
FRpt.Database.Tables[i].ConnectionProperties.Item['Server'] := server;
except on E: Exception do
FRpt.Database.Tables[i].ConnectionProperties.Item['Data Source'] := server;
end;
end;
end;
В идеале я хотел бы сказать что-то вроде:
case FRpt.Database.Tables[i].ConnectionProperties.ConnectMethod of
crymethod_ODBC : sIdx := 'Data Source';
crymethod_Direct : sIdx := 'Server';
...other methods...
end; //case
FRpt.Database.Tables[i].ConnectionProperties.Item[sIdx] := server;
Итак, мой вопрос:
Как определить способ подключения отчета Crystal XI во время выполнения перед входом в систему?
Справочная информация:
- Я использую Delphi 2007
- Я показываю
отчет с использованием ActiveX
библиотека, которая является громоздкой и
трудно и глупо и неизбежно
( см. Этот пост ).
- Отчеты в Crystal XI, SP4
- Ради обсуждения давайте предположим, что все отчеты против Oracle 10g
базы данных
- Мой аппарат использует Windows Vista, большинство пользователей используют XP.
Большое спасибо за любую помощь, которую кто-то может предложить.