[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.048 IsXXXXの処理でいろいろと遊んでみた(笑)

IsXXXXの処理でいろいろと遊んでみた(笑)


本文(発行内容)


<IsXXXXの処理でいろいろと遊んでみた(笑)>

こんにちは、三流プログラマーのKen3です。 今回は、IsEmptyやIsDate、そんなチェック関係の処理で遊んでみます。 タイトルいろいろなとなっているけど、数パターンです(笑) ※誇大タイトルかなぁ 拾い読みして、何かの参考となれば幸いです。

/* * 1.IsEmptyでデータチェック */

変数が初期化されているか、されていないかを IsEmpty関数でチェックできます。 [No.5 IsEmptyでデータチェック ] http://www.ken3.org/backno/backno_asp02.html#5 で、パラメータの受取りのチェック処理を軽く書いてます。 使い方は簡単で、IsEmpty(変数)でTrue/Falseの戻り値で判断します。 <%@LANGUAGE=VBScript%> <html> <head> <title>IsEmpty関数でデータのチェック</title> </head> <body> <!-- Ken3 --><!-- #include file="info.inc" --> <h2>IsEmpty関数でデータのチェック</h2> Request.QueryString("DATA")をチェックすると、、、<br> <% 'IsEmptyで変数をチェックする If IsEmpty(Request.QueryString("DATA")) = True Then 'DATAが無しの時 Response.Write "DATAパラメータを受取れませんでした" Else Response.Write "受取ったパラメータは[" Response.Write Request.QueryString("DATA") & "]です" End If %> <HR> パラメータ無し<A href="test048-1.asp">test048-1.asp</a><br> パラメータあり<A href="test048-1.asp?DATA=ABC">test048-1.asp?DATA=ABC</a><br> 項目DATAはあり<A href="test048-1.asp?DATA">test048-1.asp?DATA</a><br> <br> </body> </html> ------- If IsEmpty(Request.QueryString("DATA"))のチェックで http://www.ken3.org/cgi-bin/test/test048-1.asp http://www.ken3.org/cgi-bin/test/test048-1.asp?DATA=ABC はあり/なしなので、想像つきやすいですよね、 問題は、 http://www.ken3.org/cgi-bin/test/test048-1.asp?DATA と項目だけあった場合どうなるでしょう? 私もわからなかったので、やってみたらFalseで 受取ったパラメータは[]ですと表示されました。 xxx.asp?MODE=DELETE&NO=123 とやらずに xxx.asp?DELETE&NO=123 として、xxx.asp側でIsEmptyを使用して判断するのもありかなぁ ※好みの問題だけどね あっ、せっかく作った表示のツール使おう http://www.ken3.org/cgi-bin/tools/look.asp?MODE=DELETE&NO=123 とここまでは、普通、 http://www.ken3.org/cgi-bin/tools/look.asp?DELETE&NO=123 でテストすると、あれ?項目名がおかしいよ。 http://www.ken3.org/cgi-bin/tools/look.asp?ADD=&NO=777&USERID=Ken3 なんてテストすると、いろいろと処理の感じがつかめるかも。 データチェックや渡し方、、、奥が深そうな予感、、、

/* * 2.何に使うの? IsArray関数 , IsObject関数 */

よくわからなかったのが、 IsArray関数 , IsObject関数 の2つ。 IsNull関数は、変数の中身がNullを表しているかのチェックなのでわかるけど、 IsArray関数 変数が配列か? IsObject関数 変数がOBJECT変数か? この2つはテストの例題が浮かばなかった。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Function関数やSub関数の引数チェックに使うのかなぁと思いつつ、 かるく触れただけでサヨナラです(思いついたらまた発行します)

/* * 3.IsDate関数で変換可能か調べ、CDate関数で変換、DateAddで遊ぶ */

IsDate関数は式を日付に変換可能かチェックする関数です。 チェック後に変換可能ならCDate関数を使用して変換し、 DateAdd関数を使って+−してみます。 <%@LANGUAGE=VBScript%> <html> <head> <title>IsDate関数で変換可能か調べ、CDate関数で変換、DateAddで遊ぶ</title> </head> <body> <!-- Ken3 --><!-- #include file="info.inc" --> <h2>IsDate関数で変換可能か調べ、CDate関数で変換、DateAddで遊ぶ</h2> 受取ったパラメータは<br>[<%=Request.QueryString("DATA")%>]<br> <% 'IsDateで変数をチェックする If IsDate(Request.QueryString("DATA")) = True Then '変換可能な時 DATA = CDate(Request.QueryString("DATA")) Response.Write "CDateの結果は" & DATA & "です<br>" Response.Write "3日後は、" & DateAdd("d", 3, DATA) & "です<br>" Response.Write "1ヶ月前は、" & DateAdd("m", -1, DATA) & "です<br>" D = Request.QueryString("DATA") 'パラメータをそのまま Else '変換不可の時 Response.Write "を日付に変換することはできません" D=Date() '現在日付を代入 End If %> <HR> <FORM ACTION="test048-2.asp" METHOD="GET"> 変換したい日付文字列 <INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=D%>"> <INPUT TYPE="submit" VALUE="変換テスト"><br> ↑いろいろと遊んでみてください↑ </FORM> <br> </body> </html> http://www.ken3.org/cgi-bin/test/test048-2.asp?DATA=2003-04-10 http://www.ken3.org/cgi-bin/test/test048-2.asp?DATA=04-15 http://www.ken3.org/cgi-bin/test/test048-2.asp?DATA=2000.4.1 http://www.ken3.org/cgi-bin/test/test048-2.asp?DATA=ABC など、あとは、テキストボックスに入れて気になる日付書式をテストしてください。

/* * 4.IsNumeric関数 でチェック */

IsNumeric関数で式が数値を表せるかチェックするのかぁ・・ その後、CIntとFormatNumber関数で遊んでます。 <%@LANGUAGE=VBScript%> <html> <head> <title>IsNumeric関数で変換可能か調べ、CInt関数,FormatNumber関数を使う</title> </head> <body> <!-- Ken3 --><!-- #include file="info.inc" --> <h2>IsNumeric関数で変換可能か調べ、CInt関数,FormatNumber関数を使う</h2> 受取ったパラメータは<br>[<%=Request.QueryString("DATA")%>]<br> <% 'IsNumericで変数をチェックする If IsNumeric(Request.QueryString("DATA")) = True Then '変換可能な時 DATA = CInt(Request.QueryString("DATA")) Response.Write "CInt()の結果は" & DATA & "です<br>" DATA = FormatNumber(Request.QueryString("DATA"), 2) Response.Write "FormatNumber(XX,2)の結果は" & DATA & "です<br>" Else '変換不可の時 Response.Write "を数値に変換することはできません、確認してね" End If D = Request.QueryString("DATA") 'パラメータをそのまま保存 %> <HR> <FORM ACTION="test048-3.asp" METHOD="GET"> 数値に変換したい文字列 <INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=D%>"> <INPUT TYPE="submit" VALUE="変換テスト"><br> ↑いろいろと遊んでみてください↑<br> ※123456とInt以上を入れてオーバーフローを発生させたりして遊んでね </FORM> <br> </body> </html> テストパターンは適当に、 http://www.ken3.org/cgi-bin/test/test048-3.asp?DATA=1234 http://www.ken3.org/cgi-bin/test/test048-3.asp?DATA=12.5 http://www.ken3.org/cgi-bin/test/test048-3.asp?DATA=12.567 http://www.ken3.org/cgi-bin/test/test048-3.asp?DATA=12g (12グラムのつもり) http://www.ken3.org/cgi-bin/test/test048-3.asp?DATA=1,234 (カンマを付けて) チョットビックリは、 http://www.ken3.org/cgi-bin/test/test048-3.asp のパラメータ無しが0になる(IsNumericを通過する)ことです http://www.ken3.org/cgi-bin/test/test048-3.asp?DATA=+ (+はスペースの意味) のスペースは変換できないと判断するのだが、、、 あとはお約束のオーバーフロー、 http://www.ken3.org/cgi-bin/test/test048-3.asp?DATA=123456 をテストすると、 受取ったパラメータは [123456] Microsoft VBScript 実行時エラー エラー '800a0006' オーバーフローしました。: 'CInt' /cgi-bin/test/test048-3.asp, 行 13 あらら、情けないねぇ(笑) いろいろと変換や自動的な四捨五入など、変換・チェックを試してみて下さい。

/* * 5.終わりの挨拶 </HTML> */

今回は、 IsXXXXXの関数でチェックするパターンを少し書きました。 ポイントは、 ・変換前にチェックを行ってみましょう ・IsNumericは数値のチェックなのでIntのオーバーフローまではチェックできない ぐらいかなぁ。 まぁ、少し不安だけど、なんとかなるかなぁ。 素朴な疑問あったら、気軽に、 メール、掲示板に書き込んでくださいね。 掲示板 : http://www.ken3.org/asp/bbs-asp.html ASP、VBScript勉強中の三流プログラマーのKen3でした。 ---------------------------------- 関連項目(ただのバックナンバー紹介) ---------------------------------- [No.5 IsEmptyでデータチェック ] http://www.ken3.org/backno/backno_asp02.html#5 で、パラメータの受取りのチェック処理を軽く書いてます。

フィードバック

ASP系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.048を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告