変数 Query の設定
最後に、Query 変数の値を設定します。CatName 値の長さが 0 の文字列でない場合、CatID はデータベースの FilmCategory インスタンスを取得します。次に、TopCategory クエリを実行します。CatName 値の長さが 0 の文字列である場合は、Cookie がなかったか、その値が FilmCategory インスタンスの ID に対応していませんでした。いずれの場合も、 TopFilms クエリを実行します。
初めに定義したように TopFilms クエリはパラメータを取らないことに注意してください。このコードはパラメータを TopFilms に渡そうとするため、“ダミー” パラメータを受け入れるようにクエリを変更する必要があります。ダミー・パラメータは、クエリを実行するときに実際には使用されないパラメータです。“[演習]” グラフィックをクリックし、変更された TopFilms クエリを表示します。
—TopPicks.csp—
TopPicks.csp
<html> <body>
<script language="cache" runat="server">
set CatID = %request.GetCookie("CacheCinemaLastCategory")
set CatName = ""
if (CatID '= "") {
set Cat = ##class(Cinema.FilmCategory).%OpenId(CatID)
if (Cat '= "") {
set CatName = Cat.CategoryName
}
}
if (CatName '= "") {
set Query = "TopCategory"
} else {
set Query = "TopFilms"
}
</script>
<font color="#0000FF" size="+2"><b>Today's #(CatName)# Top Picks </b></font>
<table border=0>
<csp:query
name=FilmList
classname="Cinema.Film"
queryname='#(Query)#' P1=#(CatID)#>
<csp:while condition="FilmList.Next()"> ... </csp:while>
</table>
</body> </html>