Rates_edit.htx
<!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html;
charset=windows-1251">
<meta name="GENERATOR"
content="Microsoft FrontPage 2.0">
<title>Untitled
Normal Page</title>
</head>
<body>
<p> </p>
<form action="rates_submit.idc?kurs1=<%txtKurs%>&id1=<%id%>"
method="POST"
name="rates_edit"
<%txtkurs%>"&id1="<%id%>"">
<p><font
face="Times New Roman CYR">Код валюты- <strong><%kod%></strong>
</font></p>
<p><font
face="Times New Roman CYR">Курс <input
type="text"
size="20" name="txtKurs" value="<%kurs%>"></font></p>
<p><input
type="submit" name="B1"
value="Передать
изменения"></p>
</form>
</body>
</html>
Результат приводится на рис.9. Далее результаты редактирования
курса передаются обратно в базу данных, т.е. файл rates_submit.idc
будет, очевидно, содержать оператор update, а соответствующий
.htx- переход на новую страницу или возвращение обратно на просмотр
списка и т.д.
Необходимо отметить, что соответствующий источник
данных (в нашем случае rates) должен быть создан в ODBC-менеджере
как системный, иначе он не будет виден другим пользователям.
Рис.9
4. Active Data Objects
Когда речь заходит о компонентах ActiveX, как правило,
неявно подразумевается клиентская часть приложения. Microsoft
Active Server Pages (ASP)- активные серверные страницы- представляют
собой инструмент для эффективной разработки серверных Web-приложений,
интегрирующих в своем составе HTML-код, VBScript и компоненты
ActiveX. Это означает, что в уже существующие наработки легко
могут быть встроены фрагменты кода на VBScript или JavaScript,
а также вызовы соответствующих объектов ActiveX. Как, наверное,
известно, VBScript- это сужение хорошо знакомого языка программирования
Visual Basic на область создания Web-страниц. Основным идейным
отличием VBScript от VB, на мой субъективный взгляд, служит то,
что VBScript не содержит операторов файлового ввода-вывода и вообще
средств прямого доступа к операционной системе (напрашиваются
параллели, если Java сопоставить с С/С++, не правда ли). Кроме
этого, в VBScript существует только один тип переменных- variant,
отсутствуют декларативные константы и т.п. Наличие привычного
синтаксиса языка высокого уровня существенно упрощает создание
HTML-страниц. См. классический пример:
<HTML>
<BODY>
<% For i = 3 To 7 %>
<FONT SIZE=<% =
i %>>
Hello World!<BR>
<% Next %>
</BODY>
</HTML>
Кроме этого, в состав среды активных серверных страниц
(ASP Framework) входят следующие 5 основных встроенных объектов.
- Application (приложение)- для
разделения информации между всеми пользователями данного приложения
- Request (запрос)- для получения тех значений,
которые броузер клиента передает на сервер по HTTP-запросу, т.е.,
грубо говоря, для получения информации о пользователе или от пользователя
- Response (ответ)- для передачи информации клиенту
- Server (сервер)- предоставляет возможность обращения
к методам и свойствам сервера для управления средой исполнения
ASP
- Session (cеанс)- для хранения информации, относящейся
к данной пользовательской сессии.
Подробнее узнать о назначении и использовании объектов
ASP, их методах и свойствах можно, обратившись к документации,
например, Active Server Pages Roadmap.
Помимо базовых объектов, ASP поддерживают многочисленные
компоненты ActiveX, которые упрощают создание и значительно повышают
функциональность активных Web-страниц. К ним относятся различные
элементы управления, компоненты, создающие содержание приложения,
компоненты ввода/вывода в файл (чего, как мы помним, не было в
VBScript) и многие другие. Но нас в первую очередь будут интересовать
компоненты, позволяющие организовать доступ к базам данных, или
Active Data Objects (ADO).
Рис.10
В отличие от хорошо известных Data Access Objects
(DAO) или Remote Data Objects (RDO) ADO имеют менее иерархически
строгую структуру (см.рис.10) и потому более удобны при работе
с базами данных.
Например, публикация нашей таблицы с курсами валют
при помощи ASP и ADO может быть выполнена следующим образом.
Ratesado.asp
<% if IsObject(Session("conn"))
then
set c=Session("conn")
else
set c=Server.CreateObject("ADODB.Connection")
c.Open "rates","sa",""
set Session("conn")=c
end if
set RS=c.Execute("select
* from rates")%>
<!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html;
charset=windows-1251">
<meta name="GENERATOR"
content="Microsoft FrontPage 2.0">
<title>Курсы валют</title>
</head>
<body>
<p><font size="5"
face="Times New Roman CYR"><strong>Курсы
валют</strong></font></p>
<table border="1">
<tr>
<th align="left"><font
face="Times New Roman CYR">Код</font></th>
<th align="left"><font
face="Times New Roman CYR">Курс</font></th>
</tr>
<% do while not RS.EOF
%> <tr>
<td><%
id1=RS("id") %> <a
href="http://ntalexejs/aaa/ratesado_edit.asp?id1=<%=id1%>"><%=RS("kod")%></a></td>
<td><%=RS("kurs")%>
</td>
</tr>
<% RS.MoveNext
loop %></table>
</body>
</html>
Получим результат, аналогичный рис.7. Обратите внимание
на передачу идентификатора соединения между разными скриптами
с помощью переменных класса Session. Обновление курса валюты организуем
следующим образом:
Ratesado_edit.asp
<%id1=Request.QueryString("id1")
RS=Session("conn").Execute("select
kod,kurs from rates where id="&id1)
kurs1=RS("kurs")%>
<!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html;
charset=windows-1251">
<meta name="GENERATOR"
content="Microsoft FrontPage 2.0">
<title>Код валюты</title>
</head>
<body>
<form action="ratesado_submit.asp"
method="POST" name="frm">
<input type="hidden"
name="hid" value="<%=id1%>"><p>Код
валюты <strong><%=RS("kod")%>
</strong></p>
<p>Курс<strong>
</strong><input type="text" size="14"
name="txtKurs"
value="<%=kurs1%>"><strong> </strong></p>
<p><input
type="submit" name="B1"
value="Передать
изменения"></p>
</form>
</body>
</html>
Приведенный код вполне может быть воспроизведен,
и если он вдруг заработает , то мы получим страницу типа той,
что изображена на рис.9. Наконец, запрос на обновление оформим
как отдельный asp:
Ratesado_submit.asp
<%Session("conn").Execute
"update rates set kurs=" & Request.Form("txtKurs")
& "where id=" & Request.Form("hid")
Response.Redirect("ratesado.asp")%>
Последний оператор осуществляет автоматический переход
на просмотр таблицы курсов.ADO являются универсальным инструментом
доступа к данным. Вы можете без изменений использовать интерфейс
ADO из данного примера при работе с базами данных на VB, Visual
FoxPro и т.д. Наконец, с помощью ADO, в свою очередь, могут быть
построены пользовательские компоненты, для обращения к серверу
баз данных как со стороны "толстого" (Win32), так и
со стороны тонкого (Internet Browser) клиента. Функции обеспечения
целостности транзакций, сервисы безопасности и согласованной работы
компонент в распределенном приложении может взять на себя Microsoft
Transaction Server (cм.рис.11), но это уже тема совсем другого
рассказа.
Рис.11
[]
[]