Главная » Delphi » Активные объекты сервера и базы данных

0

Теперь создадим  немного более  полезный пример и используем базу данных  или ее таблицу  для демонстрации возможности запроса и доступа  к данным  таблицы на сервере и представления результатов в составе  активной страницы. Чтобы восполь зоваться этими  функциональными возможностями, необходимо сначала  добавить но вый модуль данных, выбрав в меню File пункты New, Data Module.

Присвойте свойству  Name модуля  данных  новое   значение, например DataMod- uleASP, и сохраните этот  новый модуль в файле DataMod.pas. Затем, чтобы  сохра нить  весь проект, выберите в меню File пункт Save All. Теперь главный файл  проекта D6ASP.dpr содержит в разделе uses ссылку на новый модуль данных.  Внутри  этого модуля  данных   можно   разместить  компонент  TClientDataSet из  вкладки   Data Access (Доступ  к данным), это самый  простой и наиболее гибкий способ  обеспечить доступ к набору данных.  В принципе, чтобы  расширить данный пример, можно  заме нить его на другой компонент набора данных.

Перетащите компонент TClientDataSet из панели инструментов в модуль данных. Чтобы обеспечить его источником данных, щелкните на кнопке с многоточием рядом  со свойством  FileName,  перейдите  в  каталог   C:\Program Files\Common Files\Bor-land Shared\Data —    там   находятся  таблицы  из   демонстрационной  базы   данных DBDEMOS, MyBase XML, а также  бинарный файл  ClientDataSet. Для этого  примера вы берите файл biolife.xml.

Теперь, когда  модуль данных  готов,  необходимо позаботиться о его  совместном использовании в среде  многопоточного режима. Наилучший способ  создать  модуль данных  внутри  активного объекта сервера, когда в этом возникает необходимость, за ключается либо в использовании событий BeginPage и EndPage, либо (что  даже еще проще) непосредственно внутри метода Welcome.

Но,  чтобы  фактически воспользоваться модулем  DataMod, нужно  добавить его  в

раздел   uses модуля  DrBob42ASP. Затем   необходимо перенести  код  листинга 22.6

внутрь  метода  Welcome и можно  свободно создавать, использовать и удалять  модули

данных.

Листинг 22.6. DrBob42ASP — исходный  код активного объекта сервера

procedure TDrBob42.Welcome;

var

Str: String;

DM: TDataModuleASP;

begin

Str := Request.Form.Item[‘Name’]; Response.Write(‘Hello, ‘+Str+’!’); Response.Write(‘<P>’);

Response.Write(‘Welcome to Delphi 6 and ASP Objects’);

try

DM := TDataModuleASP.Create(nil);

// использование DM…

finally

DM.Free

end

end;

Для представления в броузере информации из набора данных следует передать все данные  из компонента ClientDataSet в создаваемую  таблицу  HTML,  которая будет содержать столбцы Common_Name (Название) и Notes (Замечания) всех  рыб,  пере численных в справочнике dataset. Для этого  достаточно всего лишь нескольких до полнительных строк  кода, создающего динамический HTML (см. листинг 22.7).

Листинг 22.7. DrBob42ASP — исходный  код активного объекта сервера

procedure TDrBob42.Welcome;

var

Str: String;

DM: TDataModuleASP;

begin

Str := Request.Form.Item[‘Name’]; Response.Write(‘Hello, ‘+Str+’!’); Response.Write(‘<P>’);

Response.Write(‘Welcome to Delphi 6 and ASP Objects’);

try

with DM.ClientDataSet1 do try

Open; First;

Response.Write(‘<TABLE BORDER=1><TR><TD>Common_Name</TD>’); Response.Write(‘<TD>Notes</TD></TR>’);

while not Eof do begin Response.Write(‘<TR><TD>’); Response.Write(FieldByName(‘Common_Name’).AsString); Response.Write(‘</TD><TD>’); Response.Write(FieldByName(‘Notes’).AsString); Response.Write(‘</TD></TR>’);

Next

end;

Close;

finally

Response.Write(‘</TABLE>’)

end;

finally

DM.Free

end

end;Результат представлен на рис. 22.11.

Рис. 22.11. Динамический вывод HTML активного объекта сервера

В состав  Delphi уже входит  ряд  полезных компонентов и методов, позволяющих создавать хорошо отформатированный динамический HTML. В NetCLX компоненты, способные порождать код HTML,  называются PageProducers (генераторы страниц). Вместо того,  чтобы  тратить время  на изучение HTML,  можно  использовать генерато ры страниц, которые динамически создадут необходимые файлы HTML.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии