Каким образом поменять строку коннекта для TfrxADODataBase, чтобы избежать появления сообщения об ошибке, если у пользователя строка коннекта отлична от строки коннекта, установленной разработчиком в шаблоне отчёта?

Question: Каким образом поменять строку коннекта для TfrxADODataBase, чтобы избежать появления сообщения об ошибке, если у пользователя строка коннекта отлична от строки коннекта, установленной разработчиком в шаблоне отчёта?

Answer:

Для реализации такой функциональности нужно запретить коннект при загрузке отчёта в событии TfrxReport.OnBeforeConnect var Form1: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TForm1; 
Connect: Boolean; 
implementation {$R *.dfm} 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
Connect:=False; 
frxReport1.LoadFromFile('C:\test.fr3'); 
Connect:=True; 
TfrxADODataBase(frxReport1.FindObject('ADODatabase1')).Connected := False; 
TfrxADODataBase(frxReport1.FindObject('ADODatabase1')).DatabaseName := 'Provider=Microsoft.Jet.OLEDB.4.0;
User ID=Admin;
Data Source=C:\Program Files\FastReports\FastReport 4\Demos\Main\demo.mdb'; 
TfrxADODataBase(frxReport1.FindObject('ADODatabase1')).Connected := True; 
frxReport1.ShowReport(); 
end; 
procedure TForm1.frxReport1BeforeConnect(Sender: TfrxCustomDatabase; 
var Connected: Boolean); 
begin 
if not Connect then 
Connected:=False; 
end;