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

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

3.6.10 エラー処理

■処理の内容

データベースを検索しているときに、データベースでエラーが発生した場合、またはデータベースに該当データが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) 2000またはWindows Server(R) 2003の場合は、サンプルプログラムの一部を以下のように変更してください。
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を使用します。

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

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