Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 16.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.35 Mб
Скачать

3.4. Компонент QueryTableProducer

Компонент QueryTableProducer отличается от компонента DataSetTableProducer наличием свойства Query типа TQuery, которое используется для выполнения SQL-запроса к базе данных.

3.5. Пример генератора html-страниц

В примере выполняется формирование статического HTML-документа, анало­гичного документу из раздела "Статическая публикация"данной главы. Однако здесь генерация документа происходит с использованием стандартных компо­нентов Delphi. На форме находятся четыре кнопки, имеющие имена GenPageProducer,

GenDataSetPageProducer, GenTableProducer, GenQueryTableProducer и служащие для генерации HTML-документа с помощью размещенных на форме

Компонентов PageProducer, DataSetPageProducer, DataSetTableProducer и QueryTabieProducer, соответственно. Для отображения сформированной HTML-страницы в браузере служит кнопка с именем showHtmi. На форме также разме­щены многострочный редактор Memol и наборы данных Tabiei и Queryi.

В качестве источника данных для компонентов DataSetPageProducer и GenTabieProducer используется набор данных Tabiei, связанный с этими компо­нентами через их свойство DataSet.

Свойству htmldoc компонента PageProducer в качестве значения установлен сле­дующий текст:

IТLЕ>Демонстрация возможностей PageProducer </TITLE>

</HEAD><BODY>

<Н1> Демонстрация PageProducer </Hl>

Эта страница демонстрирует возможности PageProducer <p>

Имя базы данных <b> <#dbname> </b>

Дата: <b> <#date> </b>. <p>

<hr>

</BODY></HTML>

При формировании HTML-документа (методом content) теги-транспаранты <#dbname> и <#date> в этом шаблоне будут заменены на конкретные значения.

Значением свойства htmldoc компонента DataSetPageProducer является следую­щий текст:

HTML> <HEAD>

<TITLE> Данные из файла <#dbname> </TITLE>

</HEAD> <BODY>

<H1> <CENTER> Данные из файла <#dbname> </CENTER> </Hl>

Данные первой записи из БД <br>

Имя: <#name> <br>

Размер: <#size> <br>

Вес: <#weight> <br>

Место: <#area> <br>

Дата: <#date> <br>

</BODY> </HTML>

Здесь теги-транспаранты <#dbname>, <#name>, <#size>, <#weight>, <#area> И <#date> при формировании HTML-документа также будут заменены на кон­кретные значения полей БД.

В качестве источника данных для компонента QueryTabieProducer используется набор данных Queryi, связанный с этим компонентом через свойство DataSet последнего. Свойству sql объекта Queryi, используемому для хранения SQL-запроса к БД, необходимо задать значение, которое обеспечит получение требуемых данных. В рассматриваемом примере свойство sql объекта Queryl со­держит следующий запрос:

SELECT * FROM Authors

WHERE YearBorn > 1960

Ниже приведен код модуля DBHForm главной формы HTMLForm приложения:

unit DBHForm; interface

uses

SysUtils, Windows, Messages, Classes, Graphics,

Controls, Forms, DBCtrls, StdCtrls, DBTables,

ExtCtrls, Mask, Db, Dialogs, HTTPApp, DSProd, DBWeb;

type

THTMLForm = class(TForm) ShowHtml: TButton; GenPageProducer: TButton; GenDataSetPageProducer: TButton; GenTableProducer: TButton; GenQueryTableProducer: TButton; Memol: TMemo;

PageProducerl: TPageProducer; DataSetPageProducerl: TDataSetPageProducer; DataSetTableProducerl: TDataSetTableProducer; QueryTableProducerl: TQueryTableProducer; Tablel: TTable; Queryl:TQuery;

procedure FormCreate(Sender: TObject); procedure GenPageProducerClick(Sender: TObject); procedure GenDataPageProducerClick(Sender: TObject); procedure GenTableProducerClick(Sender: TObject); procedure GenQueryTableProducerClick(Sender: TObject); procedure ShowHtmlClick(Sender: TObject); procedure DataSetPageProducerlHTMLTag(Sender: TObject; Tag: TTag;

const TagString: String; TagParams: TStrings;