Распределенные приложения: контроллеры автоматизации. Часть 2. Фертиков В.В. - 7 стр.

UptoLike

Составители: 

7
щих форматах (*.doc, *.xls и т.п.). Можно пойти дальше: реализовать распреде-
ленное приложение, в котором генератор отчетов будет клиентом СУБД с од -
ной стороны и клиентом сервера автоматизации (Word, Excel и т.п.) с другой .
Рассмотрим простой пример такого приложения, генерирующего отчет
при помощи Microsoft Word. Данные для отчета будут выбираться из демонст-
рационной базы данных с псевдонимом DBDEMOS, входящей в поставку Delphi.
Для доступа к какой - либо из таблиц этой базы данных необходимо на форму
разрабатываемого приложения поместить компонент TTable, установив соот-
ветственно его свойства DatabaseName и TableName. Алгоритм чтения дан -
ных из таблицы может быть, например , следующим :
Table1.Open;
with Table1 do while not Eof do begin
// прочитать значение полей из Fields.Fields[i].AsString;
Next
end;
Table1.Close;
Для корректного соединения с OLE-сервером клиент должен, прежде все-
го, сделать попытку обнаружить уже запущенный сервер . И только в случае не-
удачи создать новый объект автоматизации. Таким образом, пример из пре-
дыдущего раздела целесообразно доработать, как показано ниже:
try // если Word запущен - подключиться к нему
W := GetActiveOleObject('Word.Application');
except // если нет - запустить
W := CreateOleObject('Word.Application');
end;
Помимо прочего, в данном примере мы изменили программный иденти-
фикатор, использовав вместо « Word.Basic» более современный объект авто-
матизации « Word.Application» . К сведению , объект « Word.Basic» инкап -
сулирует конструкции одноименного языка, обеспечивавшего программируе-
мость прежних версий приложения: Word version 6.0 и Word for Windows 95.
Его реализация сохранена для обеспечения совместимости современных версий
Word со старыми клиентами.
Ниже приведен полный код генератора отчета, который реализован как
отклик на событие нажатия кнопки:
procedure TForm1.Button1Click(Sender: TObject);
var W,D,S,PosBeg,PosEnd:Variant; i,j:Integer; ws:WideString;
begin
with Table1 do begin
DatabaseName:='DBDEMOS'; TableName:='country.db'; Open
end;
                                      7
щих форматах (*.doc, *.xls и т.п.). Можно пойти дальше: реализовать распреде-
ленное приложение, в котором генератор отчетов будет клиентом СУБД с од-
ной стороны и клиентом сервера автоматизации (Word, Excel и т.п.) с другой.
      Рассмотрим простой пример такого приложения, генерирующего отчет
при помощи Microsoft Word. Данные для отчета будут выбираться из демонст-
рационной базы данных с псевдонимом DBDEMOS, входящей в поставку Delphi.
Для доступа к какой-либо из таблиц этой базы данных необходимо на форму
разрабатываемого приложения поместить компонент TTable, установив соот-
ветственно его свойства DatabaseName и TableName . Алгоритм чтения дан-
ных из таблицы может быть, например, следующим:
  Table1.Open;
  with Table1 do while not Eof do begin
// прочитать значение полей из Fields.Fields[i].AsString;
     Next
  end;
  Table1.Close;

      Для корректного соединения с OLE-сервером клиент должен, прежде все-
го, сделать попытку обнаружить уже запущенный сервер. И только в случае не-
удачи – создать новый объект автоматизации. Таким образом, пример из пре-
дыдущего раздела целесообразно доработать, как показано ниже:
  try      // если Word запущен - подключиться к нему
    W :=   GetActiveOleObject('Word.Application');
  except   // если нет - запустить
    W :=   CreateOleObject('Word.Application');
  end;

      Помимо прочего, в данном примере мы изменили программный иденти-
фикатор, использовав вместо «Word.Basic» более современный объект авто-
матизации «Word.Application ». К сведению, объект « Word.Basic» инкап-
сулирует конструкции одноименного языка, обеспечивавшего программируе-
мость прежних версий приложения: Word version 6.0 и Word for Windows 95.
Его реализация сохранена для обеспечения совместимости современных версий
Word со старыми клиентами.
      Ниже приведен полный код генератора отчета, который реализован как
отклик на событие нажатия кнопки:
procedure TForm1.Button1Click(Sender: TObject);
var W,D,S,PosBeg,PosEnd:Variant; i,j:Integer; ws:WideString;
begin
  with Table1 do begin
     DatabaseName:='DBDEMOS'; TableName:='country.db'; Open
  end;