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

|
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