![]() |
|
|
|
|
#1
|
|||
|
|||
|
у меня имеется код, который может работать с двумя БД. Для этого я использовал две ADOСonnection(1 и2) и ADOQuary(1и2), но надо использовать только один ADOСonnection1 и ADOQuary1. Мне сказали, что для этого нужен Inifile. то, что выделено цветом должно автоматически заполняться из инифайла. Помогите сделать(:
Вот исходный код и Inifile: Код HTML:
инифаил: [databases] bina=value Demo=192.168.70.234 Develop=192.168.70.432 |
|
#2
|
|||
|
|||
|
В ini-файле тебе надо хранить 2 connection string и можно так же сами запросы. Ну и просто читать их оттуда и перенастраивать ADOConnection и ADOQuery. Типа:
Код:
uses IniFiles;
function TForm1.GetCount(AConnectionString, AQuery : String) : Integer;
begin
ADOQuery1.Active := False;
ADOConnection1.Connected := False;
Try
ADOConection.ConnectionString := AConnectionString;
ADOConnection.Connected := True;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(AQuery);
ADOQuery.Open;
Result := ADOQuery.Fields[0].AsInteger;
Finally
If ADOQuery.Active Then ADOQuery.Close;
ADOConnection.Connected := False;
End;
end;
procedure TForm1.Button1Click(Sender : TObject);
var
Ini : TIniFile;
AConn, ASQL : String;
begin
Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
AConn := Ini.ReadString('Connection1','ConnString','');
ASQL := Ini.ReadString('Connection1','Query','');
Cells[1,1] := GetCount(AConn,ASQL);
AConn := Ini.ReadString('Connection2','ConnString','');
ASQL := Ini.ReadString('Connection2','Query','');
Cells[2,1] := GetCount(AConn,ASQL);
Ini.Free;
end; Ну и соотв. ini-файл Код:
[Connection1] ConnString=Здесь первая ConnectionString Query=select count(template_id) as f1 from os_eqm.devices where template_id <>0 [Connection2] ConnString=Здесь вторая ConnectionString Query=select count(def_monitoring_type)from devices_active where nvl(def_monitoring_type,0) <> 0 |
|
#3
|
|||
|
|||
|
Спасибо, но выскакивает ошибка:
invalid SQL statement Последний раз редактировалось AVOKADO, 07.07.2011 в 12:06. |
|
#4
|
|||
|
|||
|
Вот мой SQL
Код:
select (select count(template_id) from os_eqm.devices where template_id <>0)+ (select count(def_monitoring_type)from devices_active where nvl(def_monitoring_type,0) <> 0) from dual |