Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.07.2011, 22:30
AVOKADO AVOKADO вне форума
Прохожий
 
Регистрация: 06.07.2011
Сообщения: 4
Репутация: 10
По умолчанию работа с IniFile

у меня имеется код, который может работать с двумя БД. Для этого я использовал две ADOСonnection(1 и2) и ADOQuary(1и2), но надо использовать только один ADOСonnection1 и ADOQuary1. Мне сказали, что для этого нужен Inifile. то, что выделено цветом должно автоматически заполняться из инифайла. Помогите сделать(:
Вот исходный код и Inifile:

Код HTML:
procedure TForm1.Button3Click(Sender: TObject); var i, j:integer; st:string; begin with StringGrid1 do Cells[0,1]:='DEMO'; with StringGrid1 do Cells[0,2]:='DEVELOP'; with StringGrid1 do Cells[1,0]:='Count1'; with StringGrid1 do Cells[2,0]:='Count2'; for j:=1 to StringGrid1.RowCount-1 do begin st:=StringGrid1.Cells[1,j]; ADOQuery1.SQL.Clear; ADOQuery1.Close; ADOQuery1.SQL.Add('select count(template_id) as f1 from os_eqm.devices where template_id <>0'); ADOQuery1.Open; with StringGrid1 do Cells[1,1]:=adoquery1.Fields[0].AsString; ADOQuery2.SQL.Clear; ADOQuery2.Close; ADOQuery2.SQL.Add('select count(def_monitoring_type)from devices_active where nvl(def_monitoring_type,0) <> 0'); ADOQuery2.Open; with StringGrid1 do Cells[2,1]:=ADOQuery2.Fields[0].AsString; end; end;


инифаил:
[databases]
bina=value
Demo=192.168.70.234
Develop=192.168.70.432
Ответить с цитированием
  #2  
Старый 07.07.2011, 01:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В 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  
Старый 07.07.2011, 11:36
AVOKADO AVOKADO вне форума
Прохожий
 
Регистрация: 06.07.2011
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо, но выскакивает ошибка:
invalid SQL statement

Последний раз редактировалось AVOKADO, 07.07.2011 в 12:06.
Ответить с цитированием
  #4  
Старый 07.07.2011, 12:21
AVOKADO AVOKADO вне форума
Прохожий
 
Регистрация: 06.07.2011
Сообщения: 4
Репутация: 10
По умолчанию

Вот мой 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
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter