nsutextbook (1037554), страница 22
Текст из файла (страница 22)
Тег <CSP:Query>Один из наиболее важных CSP-тегов. Позволяет найти данные, используя встроенные SQL-запросы класса. Выполняет следующие функции:• Соединяется с определенным классом;• Выполняет встроенный SQL-запрос;• Возвращает результирующий набор на страницу.Тег <CSP:Query> выполняет запрос и именует результирующий набор. Затем можноиспользовать этот набор внутри страницы по своему усмотрению. Имеет атрибуты:АтрибутОбязаОписаниетеленCLASSNAMEНетОпределяет имя класса Caché. Требуется, если используется предопределенный запрос, но не динамический запрос.NAMEДаЗадает имя переменной, которая позволяет обращаться крезультирующему набору на CSP-страницеQUERYNAME НетОпределяет имя предопределенного запроса Caché.
Этотатрибут требуется, если используется предопределенный запрос, но не динамический запрос.P1,P2,…P16НетПараметры, передаваемые запросу, в порядке определения их в запросе класса.Пример 1. Вывести все экземпляра класса Human на HTML-странице, отсортированные по свойству Fam.Для решения этой задачи требуется создать запрос byHuman следующего вида:SELECT %ID,age,dat,Fam,Im FROM Human ORDER BY Fam.В данном примере также используется тег <csp:while>, который позволяет пройтипо всем записям результирующего набора. Оператор hum.Get(<имя поля>) – позволяетизвлечь данные конкретного поля запроса.<csp:query name="hum" classname="Human" queryname="byHuman"><csp:while Condition=hum.Next()><tr><td width="5%"> <a href=VvodHuman.csp?Id=#(hum.Get("ID"))#>#(hum.Get("ID"))#</a></td><td width="25%">#(hum.Get("Fam"))#</td>101<td width="20%">#(hum.Get("Im"))#</td><td width="15%">#(hum.Get("dat"))#</td><td width="15%">#(hum.Get("age"))#</td></br></tr></csp:while>В результате на странице будут отображены все объекты класса Human, отсортированные по полю Fam.8.4.3.
Тег <CSP:While >Используется для циклической обработки фрагмента страницы. Этот тег, например,может быть использован при визуализации результатов запросов. Атрибуты тега приведены в таблице:АтрибутОписаниеCONDITION Логическое выражение, которое проверяется после каждой итерации.Если выражение истина, цикл продолжается.COUNTERЗадает имя переменной-счетчика цикла, начальное значением равно 1,значение счетчика автоматически увеличивается на 1 с каждой итерацией цикла. Счетчик можно не задавать.CURSORИспользуется только для встроенных SQL-запросов. Задает имя SQLкурсора.INTOИспользуется только для встроенных SQL-запросов. Задает разделенный запятыми список переменных, из которых будет состоять запрос.Имеет закрывающий тег </CSP:While>.Пример 1.Данный пример демонстрирует использование переменной счетчика цикла.<UL><CSP:WHILE COUNTER="i" CONDITION="i<10"><LI>Значение счетчика - #(i)#.</CSP:WHILE></UL>Будет выведено:• Значение счетчика - 1.• Значение счетчика - 2.• Значение счетчика - 3.• Значение счетчика - 4.• Значение счетчика - 5.• Значение счетчика - 6.• Значение счетчика - 7.• Значение счетчика - 8.• Значение счетчика - 9.• Значение счетчика - 10.Пример 2.
Использование курсора в цикле while.Данный пример показывает, что для вывода результатов запроса можно не использовать тег <CSP:Query>. Для задания запроса используется скрипт: <SCRIPT LANGUAGE=SQL CURSOR="query">. Для доступа к полям запроса используются переменные, задаваемые в теге <CSP:While> в атрибуте INTO.<SCRIPT LANGUAGE=SQL CURSOR="query">SELECT Fam,Im,age FROM Human ORDER BY Fam102</SCRIPT><CSP:WHILE CURSOR="query" INTO="Fam,Im,age">Фамилия: #(Fam)#, Имя: #(Im)#Возраст: #(age)# <BR></CSP:WHILE>Пример 3.
Вывести названия всех книг, которые описываются классом Books(Id, Author,Title).Данный пример показывает использование цикла while для вывода результатов запроса:<BODY><script language=SQL name="query">SELECT * FROM Books</script><table border=1 bgcolor=""><csp:while condition=query.Next()><tr><td>#(query.Get("Title"))#</td></tr></csp:while></table></BODY>8.4.4.
Тег <CSP:Loop>Используется для циклической обработки фрагмента CSP-страницы. Этот тег эффективно используется при визуализации результатов запроса. Атрибуты тега приведеныв таблице:АтрибутОбязателенОписаниеCOUNTERДаЗадает переменную счетчик циклаSTEPНетШаг циклаFROMНетЗадает начальное значение переменнойTOНетЗадает конечное значение переменнойИмеет парный тег </CSP:LOOP>Пример.<UL><CSP:LOOP COUNTER="i" FROM="0" TO="6" STEP="1.5"><LI>Значение счетчика #(i)#.</CSP:LOOP></UL>На странице будет напечатано:•••••Значение счетчика 0.Значение счетчика 1.5.Значение счетчика 3.Значение счетчика 4.5.Значение счетчика 6.8.4.5. Тег <CSP:If>103Тег <csp:IF> вместе с тегами <csp:ELSE> и <csp:ELSEIF> используется для определения направления генерации CSP-страницы. Тег имеет единственный атрибутCONDITION, значение которого является выражением ObjectScript или Basic и вычисляется на сервере во время выполнения.
Если оно равно true, то содержимое тега <csp:IF>выполняется, если нет, то выполняется содержимое тега <csp:ELSE>.АтрибутОбязателенCONDITION Дазадает условиеИмеет парный тег </csp:if>ОписаниеПример 1:<script language=Cache runat=server>set parol=%request.Get("psw")</script><csp:if condition='parol="password"'>Пароль верен<csp:else>Пароль не верен</сsp:if>Пример 2: формирование списка категорий книг в HTML теге <select> с помощью тега <csp:if>Категория:<select name="categ" size="1"><csp:while condition=Cat.Next()><option value='#(Cat.Get("ID"))#'><csp:if condition='book.CategoryGetObjectId()=Cat.Get("ID")'><option selected></csp:if>#(Cat.Get("CategoryName"))#</csp:while>8.4.6.
Тег <CSP:Method>Часто, работая в броузере клиента, приходится выполнять определенные действия насервере. Эту работу можно выполнять с помощью собственных методов классов базыданных Caché или с помощью методов, встроенных в CSP-страницы. Тег <CSP:Method>предоставляет возможность написать метод на Caché Object Script, который будет выполняться на сервере. Таблица атрибутов метода:АтрибутARGUMENTSNAMERETURNTYPEОбязателенДаДаНетОписаниеЗадает формальные параметры методаИмя методаТип возвращаемого методом значенияПример. Посчитать сумму двух чисел.<HTML><HEAD><!-- Пример использования тега <csp:Method> --><TITLE></TITLE>104</HEAD><BODY>Посчитать сумму двух чисел<form name="forma">ЧИСЛО 1: <input type="Text" name="C1" Value="0">ЧИСЛО 2:<input type="Text" name="C2" Value="0">РЕЗУЛЬТАТ: <input type="Text" name="rez" Value="0"><input type ="button" name="but" Value="Сумма"onclick="#server(..Summa2(self.document.forma.C1.value,self.document.forma.C2.value))#" ></form><csp:method arguments="c1:%Integer,c2:%Integer" name="Summa2">&Javascript<alert("начало");>set sum=c1+c2&Javascript<self.document.forma.rez.value=#(sum)# ;></csp:method></BODY></HTML>8.4.7.
Использование JavaScript-кода и кода HTML в коде Caché Object Script (COS)В коде COS можно использовать JavaScript-код. Синтаксис использования:&JavaScript < код на JavaScript ;>&JS < код на JavaScript ;>Пример:&JS< alert(“начало”);>Также можно использовать HTML-код. Синтаксис:&HTML< код-HTML >Пример:If (t=0) ! (t=6){ &HTML< <font color=red >>Write ^day(t)}else{ Write ^day(t)}8.5. Доступ к полям формы. Класс %CSP.RequestПри получении CSP-запроса CSP-сервер создает экземпляры класса %CSP.Request,которые доступны через переменную %request.Каждая форма имеет поля ввода, которые в соответствии со стандартом HTMLоформляются в виде: «имя/значение». Переменная %request позволяет получить доступ кполю ввода формы по его имени.
Например, для формы с полями ввода и именами соответственно: ID, Fam, Im, переменная %request позволит получить значения этих полей.Переменная %request это объект со своими свойствами и методами, которые приведены вследующей таблице:105ИмяCountGetВозвращаемоезначение%Library.IntegerФункцияАргументыЧисло значений для заданного имени поляСоответствует ар- Извлекает данные, посгументуланные в запросеKillНетNext%Library.StringSetЭлемент данныхИмя поля ввода (%Library.String)Имя поля ввода (%Library.String), необязательныйвторой параметр задает значение по умолчанию для поляУдаляет поле ввода из Имя поля (%Library.String)объекта %requestПеребрать все поля фор- Имя предыдущего поля илимы, вернуть имя сле- «» (%Library.String)дующего поляПрисваиваетзначение Имя поляэлементу данных поля (%Library.String)ввода или создает новыйэлементНапример:1) %request.Get(“Fam”) – вернет значение поля Fam.2) %request.Set(“Length”,12) – установить значение поля ввода Length равным 12.3) %request.Kill(“Length”) – удалить из объекта %request поле ввода Length совсеми его значениями.
Если задан второй параметр, то удалятся только отдельные экземпляры поля ввода, если был множественный ввод.4) %request.Next(“CustomerID”) – вернет имя следующего за CustomerID поляданных. %request.Next(“”) – имя первого поля.5) %request.Count(“Authors”) – вернет количество всех значений поля Authors.for I=1:1: %request.Count(“Authors”){ Set x=%request.Get(“Authors”, , i )…}Примеры использования объекта %requestПример 1. Дан класс Human(ID,Fam,Im, dat, age), содержащий информацию о клиентах, где Fam – фамилия, Im – имя, dat – дата рождения, age – возраст.