Опубликован: 13.09.2006 | Уровень: для всех | Доступ: свободно
Лекция 6:

Объекты ADO (продолжение)

Пример работы с объектами ADO при создании Web-документов

Последний пример в этой главе я хочу посвятить хотя бы беглому знакомству использования объектов ADO в сценариях, написанных на VBScript. Я рассмотрю пример, представляющий фрагмент создания Web-узла. Создаваемый узел является активным, он может реагировать на действия пользователя, используя для этих целей технологию ASP(Active Server Page) страниц. Напомню, эти страницы содержат сценарии, которые собственно и определяют реакцию на действия пользователя. Особенностью ASP-страниц является то, что код сценариев выполняется на сервере и пользователю пересылается статическая страница, содержащая не код, а результат его выполнения.

В рассматриваемом фрагменте рассматривается типичная для активных Web-узлов ситуация, когда пользователь заполняет некоторую форму и отсылает ее на сервер. ASP-страница обрабатывает данные формы, сохраняет их в базе данных, добавляя новые записи в таблицы, и формирует новую страницу, пересылаемую пользователю. Вот как выглядит страница узла, на которой пользователь заполняет форму:

Web-страница, содержащая форму, отсылаемую на сервер

увеличить изображение
Рис. 6.13. Web-страница, содержащая форму, отсылаемую на сервер

Приведу теперь текст ASP-страницы, которая выполняется на сервере:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>vbazu</title>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="Microsoft Theme" content="none, default">
<meta name="Microsoft Border" content="none, default">
</head>

<body>

<table border="0" width="100%" bgcolor="#0000FF" cellspacing="0" cellpadding="0" height="81">
	<tr>
	<td width="100%" height="62">
		<p align="center">
		<b><font face="Bradley Hand ITC" size="7" color="#FFFFFF">BiVANT&nbsp;&nbsp;</font></b></td>
	</tr>
	<tr>
	<td width="100%" bgcolor="#FFFF00" height="19">
	<font color="#0000FF"><b><a href="index.htm">BiVANT</a>&nbsp;
		<a href="книги.htm">Книги</a>&nbsp; <a href="статьи.htm">Статьи</a>&nbsp;
		<a href="учебники.htm">Учебники</a>&nbsp; <a href="обучение.htm">Обучение</a>&nbsp;
		<a href="чайничек.htm">Чайничек</a>&nbsp; 
		<a href="Дело%20отца/дело_отца.htm">Дело_Отца</a>&nbsp;
		<a href="онас.htm">О нас</a>&nbsp; <a href="авторы.htm">Авторы</a></b></font></td>
	</tr>
</table>

<p>
<%
'Переменные, задающие поля формы
Dim	DAvtor, DFam, DName,	DVid, DGorod, Dmail, DOtziv, DVopros, DPriob
	'Передача значений полей формы 
	DFam= Request.Form("Fam")
	DName = Request.Form("Name")
	 DVid= Request.Form("Vid")
	 DGorod =Request.Form("Gorod")
	 Dmail= Request.Form("mail")
	 DOtziv= Request.Form("Otziv")
	 DPriob= Request.Form("Priob")
	 DVopros =Request.Form("Vopros")
	DAvtor = Request.Form("Avtor")
	
'Объявление объектов ADO - Connection, Command, Recordset 
	Dim Cconnect, Cmd, Records
	Dim StrSQL	'строка запроса

	' Установить связь с базой данных 
	 Set Cconnect =Server.CreateObject("ADODB.Connection") 
	 Cconnect.ConnectionString= "provider=microsoft.jet.oledb.4.0;" & 
	 	"data source ='d:\Bivant\svyaz.mdb'"
	 Cconnect.Open

'Формирование строки запроса
StrSQL = "Select * From VoprosOtvet"

'Создание команды и задание свойств объекта Command
Set Cmd =Server.CreateObject("ADODB.Command")
Cmd.ActiveConnection = Cconnect
Cmd.CommandText = StrSQL 
Cmd.CommandType =1

'Работа с RecordSet
Set Records =Server.CreateObject("ADODB.Recordset")
With Records
	'Открытие обновляемого объекта RecordSet
	.Open Cmd,,2,3 
	
' Добавление записи
	.MoveFirst
	.AddNew
	.Fields("Автор")=DAvtor
	.Fields("Вопрос") = DVopros 
	.Fields("Отзыв") = DOtziv
	.Fields("Фамилия") =DFam
	.Fields("Имя") =DName 
	.Fields("Город") = DGorod 
	.Fields("Вид_деят") =DVid
	.Fields("Почта") =Dmail
	.Fields("Приобрести") =DPriob
	.Update 
End With	
 
%>

<b>Спасибо за Ваш интерес к нашей тематике!</b>

</p>

<p><b>Мы постараемся учесть Ваши пожелания и
своевременно ответить на вопрос. </b>

</p>

</body>

</html>

Приведу теперь комментарии к этому тексту:

  • Текст написан на HTML и представляет содержание ASP-страницы, в задачу которой входит обработать посылаемую пользователем форму. Большая часть текста задает сценарий, написанный на VBScript, и именно эту часть я и буду комментировать. Для удобства восприятия код сценария подсвечен.
  • Язык VBScript является нетипизированным языком, все переменные принадлежат к одному универсальному типу Variant, поэтому для переменных, соответствующих полям формы не задан тип.
  • Объект ASP Request позволяет передать значения из полей формы в переменные VBScript.
  • Затем начинается работа с объектами ADO, которые создаются на сервере методом CreateObject объекта Server.
  • Вся остальная часть работы с объектами ADO - создание соединения с базой данных, формирование команды, набора записей, добавление новой записи к объекту Recordset и обновление базы данных, выполняется на VBScript совершенно аналогично тому, как это делалось на VBA. В результате выполнения этого сценария база данных действительно изменяется и данные, посланные в форме, будут сохранены в соответствующей таблице базы данных.

На этом я закончу разговор о компонентах ADO, представляющих универсальный способ взаимодействия с самыми разными источниками данных.

Ольга Гафарова
Ольга Гафарова
Непонятен ход решения задачи
Серегй Лушников
Серегй Лушников
Может ли объект Recordset быть потомком объекта Record?
Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Светлана Ведяева
Светлана Ведяева
Россия, Саратов