[三流君] −−> [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 で、パラメータの受取りのチェック処理を軽く書いてます。


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。

次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません

広告:



DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く

VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。



[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


広告: