Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014-01 КНЯЗЕВА_Эл_бизнес / Электронный бизнес_Князева.doc
Скачиваний:
50
Добавлен:
20.02.2016
Размер:
1.24 Mб
Скачать
      1. Редактирование наборов данных

Вставка, обновление и удаление записей осуществляется с помощью форм, в которых резервируются названия (PathInfo) действий CGI-приложения для выполнения различных операций. Значения параметров вводятся в текстовые поля и пересылаются в базу данных с помощью действий с зарезервированными названиями. Ключевую роль играют идентификаторы текстовых полей, задаваемые атрибутом NAME. В CGI-приложении они воспринимаются как переменные, имеющие значения, введенные пользователем.

Добавление записей

Пример редактирования таблицы Country из базы данных DBDEMOS, поставляемой с DELPHI:

Дополнить проект, рассмотренный в примере раздела TDataSetTableProducer следующим образом:

  1. Добавить на модуль компонент PageProducer1 для формирования страницы с текстовыми полями для ввода информации в таблицу базы данных. В свойстве HTMLDoc прописать HTML-код следующего содержания:

<html>

<form action=/cgi-bin/название_файла.exe/save method=POST>

Страна <input type=text name="N"><br>

Столица <input type=text name="Cp"><br>

…………и так далее…………………

<input type=submit value=Сохранить><br>

<a href="/cgi-bin/название_файла.exe/prew">Показать </a>

</form>

</html>

  1. Создать действие модуля для показа начальной страницы, сформированной компонентом PageProducer1, выполняющееся по умолчанию.

  2. Добавить в модуль новое действие для сохранения данных в таблице. Задать его свойства:

  • PathInfo = save (зарезервированное на форме значение);

  • Producer = PageProducer1.

Прописать обработчик события OnAction данного действия (используются методы работы с набором данных):

Table1.Open;

Table1.Insert;

Table1Name.Value:= Request.ContentFields.Values['N'];

Table1Capital.Value:= Request.ContentFields.Values['Cp'];

Table1Area.Value:= StrtoFloat(Request.ContentFields.Values['A']);

………… и так далее ………

Table1.Post;

Table1.Close;

Полям таблицы присваиваются значения, введенные пользователем в текстовых полях на форме

В данном обработчике вставку записей можно реализовать путем выполнения SQL-запроса с оператором INSERT:

procedure……………

var name, cap, cont, ar, pop: string;

begin

name:=Request.ContentFields.Values['N'];

cap:=Request.ContentFields.Values['Cp'];

cont:=Request.ContentFields.Values['Cnt'];

ar:=Request.ContentFields.Values['A'];

pop:=Request.ContentFields.Values['P'];

Query1.SQL.Add('Insert into Country (Name,Capital,Continent,Area,Population) values ('''+name+''',’’’+cap+''','''+cont+''','''+ar+''','''+pop+''')');

Query3.ExecSQL;

end;

  1. Добавить в модуль новое действие для показа страницы, сформированной компонентом DataSetTableProducer1. Задать его свойства

  • PathInfo = prew (зарезервированное на форме значение);

  • Producer = DataSetTableProducer1.

Обработчик события OnAction созданного действия:

Table1.Open;

Response.Content:=DataSetTableProducer1.Content;

Table1.Close;

Удаление записей

Удаление записей (строк) обычно производится по какому-либо критерию. Поэтому, в первую очередь, необходимо организовать ввод этого критерия на форме и зарезервировать название действия для удаления. Например:

<form action=http://localhost/cgi-bin/название_файла.exe/del method=post>

Страна<input type=text name="F">

<input type=submit value=Удалить>

</form>

В обработчике события OnAction действия для удаления записей можно использовать различные методы, например:

  • организовать последовательный перебор записей в цикле и сравнение их с критерием:

while not Table1.EOF do begin

if Request.ContentFields.Values['F']=Table1Name.Value then

table1.Delete;

Table1.Next; end;

  • организовать выполнение параметрического запроса на удаление (DELETE FROM Country WHERE Name = :F), где в параметр передается значение, введенное пользователем на форме:

Query1.ParamByName('F').Value:=Request.ContentFields.Values['F'];

Query1.ExecSQL;