[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.042 Application("XXXX") Application変数のテスト

Application変数のテスト



本文(発行内容)


<Application("XXXX") Application変数のテスト>

こんにちは、三流プログラマーのKen3です。 今回は、 Application("XXXX") 共通変数のテスト です。 何かの参考となれば幸いです。

/* * 1.簡単な共通変数 */

ページ単位で値の受け渡しをする方法を探っていたところ、 Application変数を見つけました。 使い方は簡単で、 Application("変数名") = 値 でセット(代入) xxx = Application("変数名")で参照可能です。 へぇ〜と感心してないで、 簡単なテストを行ってみます。 内容は、文字をフォームから受けとって、その値を Application変数に保存しておきます。 http://www.ken3.org/cgi-bin/test/test042-1.asp でテスト実行できます。 <%@LANGUAGE=VBScript%> <% '頭でパラメータのチェックとセット処理 If IsEmpty(Request.QueryString("SETDATA")) = False Then Application("test042data") = Request.QueryString("SETDATA") 'データセット Application("test042time") = Now '現在時刻のセット End If Application("test042cnt") = Application("test042cnt") + 1 '+1する %> <html> <head> <title>Application("XXXX") 共通変数のテスト</title> </head> <body> <h2>Application("XXXX") 共通変数のテスト</h2> test042-1.asp<br> <hr> Application("test042data")=[<b><%=Application("test042data")%></b>]が<br> Application("test042time")=[<b><%=Application("test042time")%></b>]に書きこまれました<br> Application("test042cnt")=[<b><%=Application("test042cnt")%></b>]回目のアクセスです<br> (がセットされてます。) <hr> <br> <b>好きな文字を入れて送信して下さい</b><br> <FORM ACTION="test042-1.asp" METHOD="GET"><!-- 自分自身を呼ぶ --> <font color="blue">セットする文字は</font><br> <INPUT TYPE="text" SIZE="40" NAME="SETDATA" VALUE="ABCDE好きな文字"><br> <br> <INPUT TYPE="submit" VALUE="データセット(送信)"> </FORM> <hr> </body> </html> 簡単な解説 ~~~~~~~~~~ まず、頭でデータの受取りのチェックを行い、データアリの時はセットします。 <% '頭でパラメータのチェックとセット処理 If IsEmpty(Request.QueryString("SETDATA")) = False Then Application("test042data") = Request.QueryString("SETDATA") 'データセット Application("test042time") = Now '現在時刻のセット End If Application("test042cnt") = Application("test042cnt") + 1 '+1する %> 普通に、 Application("test042data") = 値として、セットしてます。 Application("test042cnt") = Application("test042cnt") + 1 みたいなカウントアップ的な使い方も出来ます。 <hr> Application("test042data")=[<b><%=Application("test042data")%></b>]が<br> Application("test042time")=[<b><%=Application("test042time")%></b>]に書きこまれました<br> Application("test042cnt")=[<b><%=Application("test042cnt")%></b>]回目のアクセスです<br> (がセットされてます。) <hr> ここも、<%=で値を表示してるだけです。 http://www.ken3.org/cgi-bin/test/test042-1.asp でテスト実行できます。

/* * 2.Application変数 値の保持期間、参照範囲 */

値のセットと取出しが無事にできました。 気になるのが、 Application変数 値の保持期間 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ です。 IISが起動中の間は保持されてます。 再起動や一定時間のアクセスが無く停止した時は、 メモリがクリアされます。 簡単なカウンタに使えるかなぁと思ったけど、 値を保持する処理はファイルやDBなどに保存しないとダメみたいです。 参照範囲 ~~~~~~~~ アプリケーションの共通変数なので、 同じ仮想ディレクトリ内に格納されているプログラムから共通に使えます。 共通なので、各ユーザー別に値を処理したい時は、まだ説明していない セッション変数を使う必要があります。 共通に参照可能のサンプルを兼ねて、 現在使用中のアプリケーション変数をFor Eachで表示するテストプログラムを書きます。 http://www.ken3.org/cgi-bin/test/test042-2.asp でテスト実行できます。 <%@LANGUAGE=VBScript%> <html> <head> <title>For Each で 使用中の Application 変数を表示</title> </head> <body> <h2>For Each で 使用中の Application 変数を表示</h2> test042-2.asp<br> <hr> <TABLE Border='1'> <TR><TD>項目名</TD><TD>値</TD></TR> <% 'For Each で Applicationの値を取出す For Each ITEM In Application.Contents Response.Write "<TR><TD>" & ITEM & "</TD>" '名称表示 Response.Write "<TD>" & Application.Contents(ITEM) & "</TD></TR>" '値の表示 Next %> </TABLE> <hr> </body> </html> 簡単な解説 ~~~~~~~~~~ For Each ITEM In Application.Contents でオブジェクトのループを作り、 Application.Contents(ITEM)で参照してます。 Application.Contents(1)などインデックスで参照することもできます。 レンタルサーバーなので、再起動後のテストなどできないのですが、 私が使っているアプリケーション変数の表示テストは、 http://www.ken3.org/cgi-bin/test/test042-2.asp でテスト実行できます。 テストの時、 <% 'For Each で Applicationの値を取出す For Each ITEM In Application.Contents Response.Write "<TR><TD>" & ITEM & "</TD>" '名称表示 Response.Write "<TD>" & Application.Contents(ITEM) & "</TD></TR>" '値の表示 Next %> でデバック表示すると楽な時あるので、使ってみてください。

/* * 3.力技の一言伝言板 */

一時的に消えてしまってもいい、、、そんなサンプルかぁ。 あっ、今では使われなくなった駅の伝言板じゃないけど、 伝言板もどきを作成してみます。 簡単なプログラムの仕様 伝言は10個までとし、古い伝言から上書きされる。 ファイルには残さないで、Application変数に保存する 変数は、 test042-0,test042-1...test042-9と10個の変数 と カウンタ用にtest042-no をApplicationで用意します。 <%@LANGUAGE=VBScript%> <% '頭でパラメータのチェックとセット処理 If IsEmpty(Request.QueryString("SETDATA")) = False Then 'データセット位置を決める no = Application("test042-no") + 1 '番号をカウントアップ Application("test042-no") = no 'noの代入 setno = no Mod 10 'Modで10で割った余りを計算 'セットするデータを作る no + 時刻 + 書き込みデータ setdata = no & " " & Now & " - " & Request.QueryString("SETDATA") Application("test042-" & setno) = setdata 'データのセット End If %> <html> <head> <title>ASP Application("XXXX")変数 を使った伝言板</title> </head> <body> <!-- Ken3 --><!-- #include file="info.inc" --> <h2>ASP Application("XXXX")変数 を使った伝言板</h2> test042-3.asp<br> <hr> <% 'アプリケーション変数を表示する sno = Application("test042-no") '表示スタート番号 For n = 0 To 9 '10回ループするぞ putno = (sno - n) Mod 10 '表示する変数を計算 32なら2を表示したい putdata = Application("test042-" & putno) '値を取出す Response.Write putdata Response.Write "<HR>" & Chr(13) & Chr(10) Next %> <br> <b>伝言メッセージを入れて送信して下さい</b><br> <FORM ACTION="test042-3.asp" METHOD="GET"><!-- 自分自身を呼ぶ --> <font color="blue">メッセージ</font><br> <INPUT TYPE="text" SIZE="40" NAME="SETDATA" VALUE="メッセージ"><br> <br> <INPUT TYPE="submit" VALUE="書き込み(送信)"> </FORM> <hr> </body> </html> ポイントは ~~~~~~~~~~ 頭のデータチェック後、 'データセット位置を決める no = Application("test042-no") + 1 '番号をカウントアップ Application("test042-no") = no 'noの代入 で、連番をtest042-noで管理します。 setno = no Mod 10 'Modで10で割った余りを計算 ここで、下1桁を計算します(10で割ったあまりが1桁目なので) 'セットするデータを作る no + 時刻 + 書き込みデータ setdata = no & " " & Now & " - " & Request.QueryString("SETDATA") と文字列を作成後、 Application("test042-" & setno) = setdata 'データのセット で、33番目なら、setno = 33 Mod 10で3となっているので、 test042-3にセットされます。 次に表示部分 sno = Application("test042-no") '表示スタート番号 とスタートの番号を取出します。 説明では、33番目とします。 For n = 0 To 9 '10回ループするぞ と普通に0から9のカウンターを使ったループにします。 putno = (sno - n) Mod 10 '表示する変数を計算 32なら2を表示したい ここでは、 1回目は33-0 Mod 10 で3 2回目は33-1 Mod 10 で2 ・  ・ となり、 putdata = Application("test042-" & putno) '値を取出す で、test042-X のデータを取り出し、 Response.Write putdata で表示してます。 http://www.ken3.org/cgi-bin/test/test042-3.asp でテストして、流れを確認して下さい(見て下さい) デバックじゃないけど、 http://www.ken3.org/cgi-bin/test/test042-2.asp で変数の確認をすると、わかり易いかも。 *私の失敗した変数が残っていたりして笑えるよ。

/* * 5.終わりの挨拶 */

今回は、 共通で使える変数 Application("XXXX") Application変数のサンプル解説でした。 データのやり取りの参考になれば幸いです。 素朴な疑問あったら、気軽に、 メール、掲示板に書き込んでくださいね。 掲示板 : http://www.ken3.org/asp/bbs-asp.html ASP、VBScript勉強中の三流プログラマーのKen3でした。


ページフッター

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

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

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 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記事 バックナンバー目次]


広告: