Создание
фильтров
А
теперь можно приступить к созданию фильтра, отбирающего записи из таблицы в
набор.
Помните,
как мы создали сложный набор данных? Если не помните, рассмотрим код SQL-запроса,
созданного нами:
SELECT
Content, Desc, Color FROM Guestbook, Signs WHERE Sign=ID
Ключевое
слово WHERE языка SQL задает условие, согласно которому из таблицы будут извлекаться
записи. В приведенном выше примере мы уже фактически создали условие, отбирающее
только те записи таблицы Guestbook, для которых в таблице signs имеется "пара".
Причем "пары" мы отбирали по значениям поля sign таблицы Guestbook
и поля ID таблицы signs. Такие условия называются условиями связи таблиц.
Фильтром
же называется условие отбора записей. Это условие используется не для связи
таблиц, а для отбора записей из таблицы. Например, в приведенном ниже SQL-запросе
используется именно условие отбора записей, иначе говоря, фильтр:
SELECT
Content FROM Guestbook WHERE Sign=2
Этот
запрос создаст набор данных, включающий только те записи таблицы Guestbook,
поля sign которых содержат значение 2 ("Нейтрально").
Чтобы
создать фильтр, нам придется добавить условие отбора записей к уже существующему
условию связи таблиц. Это совсем просто. Вызовите диалоговое окно Recordset
для нашего набора данных Guestbook. Если оно отобразилось в обычном виде,
щелкните кнопку Advanced, чтобы переключить его в расширенный вид. И
посмотрите на содержимое поля ввода SQL.
Итак,
нам нужно добавить в SQL-запрос Новое условие. Мы будем сравнивать значение
поля sign и...
Но
с чем мы его будем сравнивать?
Ах,
да, с параметром sign, переданным страницей Selector.htm. Но как его сюда ввести?
Очень
просто. Для этого нам понадобится создать переменную SQL-запроса, представляющую
некий параметр, полученный от другой Web-страницы или в результате каких-то
вычислений. И в этом нам поможет список Variables диалогового окна Recordset
и относящиеся к нему элементы управления.
Нажмите
кнопку со знаком "плюс". В списке появится новая строка. Щелкните
по этой строке в районе колонки Name (имя создаваемой переменной) и введите
это имя, в нашем случае — sign. После этого щелкните в районе колонки Default
Value (значение переменной по умолчанию, присваиваемое ей изначально) и
введите, скажем, 2 (т. е. по умолчанию будут выводиться только "нейтральные"
записи). Теперь останется лишь ввести в колонку Run-time Value выражение,
задающее истинное значение этой переменной. В нашем случае это будет следующий
код:
Request.QueryString("sign")
Он
извлекает из строки запроса, переданной методом GET, параметр sign. Если же
вы передаете параметры методом POST, код будет несколько иным:
Request.Form("sign")
Вот
и все. Мы создали переменную SQL-запроса и теперь можем ее использовать.
Откройте
в списке Database Items ветви Tables и Guestbook и выберите
пункт Sign. Поставьте текстовый курсор в поле ввода SQL после текста
"WHERE
Sign=ID" и нажмите кнопку WHERE. Содержимое поля ввода SQL станет
таким:
SELECT
Content, Desc, Color FROM Guestbook, Signs WHERE Sign= ID AND Sign
Поставьте
текстовый курсор после текста "AND Sign" и введите вручную текст =sign.
Таким образом, окончательный SQL-запрос будет выглядеть так:
SELECT
Content, Desc, Color FROM Guestbook, Signs WHERE Sign=ID AND Sign=sign
Все,
наш новый запрос создан. Можете нажать кнопку ОК. Перед этим, однако,
лучше нажать кнопку Test, чтобы проверить правильность задания запроса.
Так, на всякий случай.
Теперь
сохраните страницу Guestbook_table.asp и опубликуйте ее на Web-сервере вместе
со страницей Selector.htm. После этого откройте в Web-обозревателе страницу
Selector.htm, набрав в строке адреса следующее:
http://localhost/HTMLs/Selector.htm
Пощелкайте по ссылкам и посмотрите, что из этого получится. Если же серверная страница упорно выдает вам список всех записей гостевой книги, то просто нажмите кнопку обновления вашего Web-обозревателя.