Создание фильтров
А теперь можно приступить к созданию фильтра, отбирающего записи из таблицы в набор.
Помните, как мы создали сложный набор данных? Если не помните, рассмотрим код SQL-запроса, созданного нами:
SELECT
Content, Descs, 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, Descs, Color
FROM
Guestbook, Signs
WHERE
Sign = ID
AND
Sign
Поставьте текстовый курсор после текста "AND Sign" и введите вручную текст =sign. Таким образом, окончательный SQL-запрос будет выглядеть так:
SELECT
Content, Descs, 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-обозревателя.