処理の内容
データベースを検索しているときに、データベースでエラーが発生した場合、またはデータベースに該当データが1件もなかった場合、エラーを表示して再度検索を行います。
サンプルプログラム
demo.html
・・・ <FORM ACTION="/cgi-bin/wit_fmtr" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="demo_fmt.html"> 製品名:<INPUT TYPE="TEXT" NAME="Name1"><BR> <INPUT TYPE="SUBMIT" NAME="Search" VALUE="検索"> </FORM> ・・・
注意
サンプルプログラムは、SolarisおよびLinuxの場合の例です。Windows(R)の場合は、サンプルプログラムの一部を以下のように変更してください。
wit_fmtr → wit_fmtr.exe
demo_fmt.html
・・・ <!ERRORHANDLE ON> <!DO "SELECT 製品名,カテゴリ,機能,型番 FROM WL_SCHEMA.製品表 WHERE 製品名 LIKE’%$QUERY::Name1%’" RESULT=rslt ONERROR="ERROR1"> (1) ・・・ <!IF ’listlen(rslt) == 0’> <!THROW "ERROR2"> <!/IF> (2) ・・・ <!CATCH "ERROR1"> <!IF ’defined(errmsg)’> <!UNDEFVAR errmsg> <!/IF> <!VAR errmsg SCOPE=GLOBAL VALUE=’SYSTEM::DB_ERRORMSG’> <!ABORT URL="$SYSTEM::FMTR?WIT_html=database_err.html"> <!/CATCH> (3) <!CATCH "ERROR2"> <!ABORT URL="$SYSTEM::FMTR?WIT_html=no_hit.html"> <!/CATCH> (4) ・・・
(1) データベースの検索
demo.htmlから引き継いだデータを基に、データベースを検索します。検索中にエラーが発生すると、“ONERROR”に設定されている“ERROR1”に処理を引き継ぎます。
(2) 該当件数の確認
データベースを検索した結果、該当データが存在するかを確認します。該当データが存在しない場合、拡張タグ<!THROW>で設定された“ERROR2”に処理を引き継ぎます。
(3) データベースエラーの処理
データベース検索中にエラーが発生した場合、発生したエラーメッセージをグローバル変数“errmsg”に格納し、現在解析中のフォーマットファイル(demo_fmt.html)の解析処理を中断して、database_err.html へ処理を引き継ぎます。
(4) 該当データがない場合の処理
現在解析中のフォーマットファイル(demo_fmt.html)の解析処理を中断して、no_hit.html へ処理を引き継ぎます。
database_err.html
・・・ メッセージは,"<!HREPLACE errmsg>" です.<BR> (5) ・・・ <FORM ACTION="$SYSTEM::FMTR" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="demo.html"> <INPUT TYPE="SUBMIT" VALUE="トップに戻る"> </FORM> (6) ・・・
(5) エラー番号の表示
demo_fmt.html で設定された“errmsg”を表示します。
(6) 検索画面の再表示
再度、処理を選択するため、[トップに戻る]ボタンをクリックすると、demo.html に処理が引き継ぎます。
no_hit.html
・・・ <FORM ACTION="$SYSTEM::FMTR" METHOD="POST"> <INPUT TYPE="hidden" NAME="WIT_html" VALUE="demo_fmt.html"> 製品名:<INPUT TYPE="TEXT" NAME="Name1"><BR> <INPUT TYPE="SUBMIT" VALUE="検索"> </FORM> (7) ・・・
(7) 再検索
検索する文字列を入力します。入力された文字列は“Name1”に格納されます。[検索]ボタンをクリックすると、demo_fmt.htmlに処理と“Name1”を引き継ぎます。
解説
demo_fmt.html でデータベースの検索中にエラーが発生した場合、またはデータベースに該当データが存在しなかった場合のそれぞれのエラー処理を行い、再度検索します。
ポイント
<!DO>のONERRORパラメタに指定された値は、<!THROW>と同じように<!CATCH>で指定された処理に移行します。
データベースのエラーメッセージを得るには、SYSTEMパッケージ変数のSYSTEM::DB_ERRORMSGを使用します。