Мир объектов Excel 2000

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


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

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


увеличить изображение
Рис. 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, представляющих универсальный способ взаимодействия с самыми разными источниками данных.


<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, представляющих универсальный способ взаимодействия с самыми разными источниками данных.

© 2003-2007 INTUIT.ru. Все права защищены.
Содержание раздела