Symfoware Server WebDBtoolsユーザーズガイド - FUJITSU -
目次 索引 前ページ次ページ

第3章 データベース連携> 3.6 拡張タグの使用例

3.6.4 データ検索:範囲指定検索

■処理の内容

指定された範囲内のデータをデータベースから検索し、その結果を表示します。

■サンプルプログラム

ifexam.html
・・・
<FORM ACTION="$SYSTEM::FMTR" METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="ifexam_fmt.html">
下限:<INPUT TYPE="TEXT" NAME="Low"> 円 〜 上限:<INPUT TYPE="TEXT" NAME="High"> 円<BR>
<INPUT TYPE="SUBMIT" VALUE="検索">
</FORM>                                                      (1)
・・・

(1) 上限および下限の設定
指定された上限を“high”、下限を“low”に設定し、ifexam_fmt.html に引き継ぎます。

ifexam_fmt.html
・・・
<!IF 'QUERY::Low ne "" && QUERY::High ne ""'>  <!-- 下限も上限も0でない場合 -->
    <!SETVAR cond "WHERE 価格 >= $QUERY::Low AND 価格 <= $QUERY::High">      (2)
<!ELSEIF 'QUERY::Low ne ""'>
    <!SETVAR cond "WHERE 価格 >= $QUERY::Low">          (2)
<!ELSEIF 'QUERY::High ne ""'>    
    <!SETVAR cond "WHERE 価格 <= $QUERY::High">         (2)
<!ELSE>
    <!SETVAR cond '""'>                                      (2)
<!/IF>
<!DO "SELECT 製品名,価格 FROM WL_SCHEMA.製品表 $cond" RESULT=rslt>      (3)
<!IF 'listlen(rslt)==0'>
    該当するデータはありません。<BR>
<!/IF>
<TABLE BORDER=1>
    <!FOREACH rslt t>
        <TR>
            <TD><!HREPLACE 't{製品名}'></TD>
            <TD><!HREPLACE 'format(t{価格},"fix:delimit=3")'> 円</TD>
        </TR>
    <!/FOREACH>
</TABLE>                                                    (4)
・・・

(2) “high”、“low”の関係の確認および検索のための文字列の設定
ifexam.html から引き継いだ“high”と“low”の関係を確認します。“high”または“low”に0またはスペースが指定されているかどうかでデータベースを検索するための変数“cond”に設定する文字列が変わります。
(3) データベースの検索
データベースから“cond”に設定された文字列に合致するもの検索し、結果を“rslt”に格納します。
(4) 検索結果の表示
検索した情報の製品名、価格をすべて表示します。

■解説

ifexam.html で検索する上限と下限を指定して、それぞれを“high”と“low”に格納し、データベースを検索するためにifexam_fmt.html へ処理を引き継ぎます。 ifexam_fmt.html では、ifexam.html から引き継いだ“high”と“low”の2つの変数を、データベースが検索できるように1つの文字列に変換します。これを検索対象としてデータベースを検索し、結果を表示します。

データベースの範囲検索を行う場合、設定された上限、下限の2つの値によってデータベースを検索するための文字列が変わってきます。この場合、サンプルプログラムの(2)で示したように、値によって検索式が選択されるようにすることをお勧めします。

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007