Call を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードはCall です。
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>入力、結果表示を1つのASPファイルにまとめた</title>
</head>
<body>
<h2>入力、結果表示を1つのASPファイルにまとめた</h2>
test016-1.asp<br>
<hr>
<% 'まずは、パラメータ有無の判断を行う
If IsEmpty(Request.QueryString("a")) = False Then
'バラメーター有りの時
If Request.QueryString("a") = "99" Then
Call test016_SUM() '結果表示の関数を呼ぶ
Else
Call test016_WRITE() '書き込みの関数を呼ぶ
End If
Else '↓フォームの入力処理を書く(普通のHTML)
%>
<FORM ACTION="test016-1.asp" METHOD="GET">
このメルマガの満足度は?選択後、送信ボタンを押してください。<br>
<INPUT TYPE="RADIO" NAME="a" VALUE="6">6.大変満足、知人に教えます<br>
<INPUT TYPE="RADIO" NAME="a" VALUE="5">5.満足<br>
<INPUT TYPE="RADIO" NAME="a" VALUE="4">4.まぁまぁ<br>
<INPUT TYPE="RADIO" NAME="a" VALUE="3">3.どちらとも言えない<br>
<INPUT TYPE="RADIO" NAME="a" VALUE="2">2.少し不満<br>
<INPUT TYPE="RADIO" NAME="a" VALUE="1">1.不満<br>
<INPUT TYPE="RADIO" NAME="a" VALUE="0">0.かなり不満、解除します<br>
<br>
<INPUT TYPE="submit" VALUE="送 信">
<INPUT TYPE="reset" VALUE="入力クリア">
</FORM>
<% End If %>
<hr>
</body>
</html>
<% 'ここから下にSUB関数をまとめてみました。
Sub test016_WRITE() '入力値を判断して書き込む
'アンケートの結果をまず判断する
strMSG = "不正なパラメーターです" 'エラーメッセージを初期値として代入
if Request.QueryString("a") = "6" then strMSG = "大変満足" 'asp013追加
if Request.QueryString("a") = "5" then strMSG = "満足"
if Request.QueryString("a") = "4" then strMSG = "まぁまぁ"
if Request.QueryString("a") = "3" then strMSG = "どちらとも言えない"
if Request.QueryString("a") = "2" then strMSG = "少し不満"
if Request.QueryString("a") = "1" then strMSG = "不満"
if Request.QueryString("a") = "0" then strMSG = "かなり不満" 'asp013追加
If strMSG = "不正なパラメーターです" Then 'エラーパラメータのままか?チェック
Response.Write "データを正しく受け取れませんでした<br>"
Else
'FileSystemObjectを生成します。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
'test016.txt を追加モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test016.txt"), 8, True)
'ファイルにアンケート結果のデータを書き込む
ts.write Request.QueryString("a") & "," '結果0〜6を書く
ts.write strMSG & "," 'ファイルに結果を書き込む
ts.write Now '時刻を書く
ts.write chr(13) & chr(10) '改行する
'使ったファイルは閉じようよ
ts.close
Response.Write "あなたの回答は<b>" & strMSG & "</b>でした<BR>"
Call test016_SUM() '結果表示を呼ぶ 016追加
End if
End Sub
Sub test016_SUM() '結果の表示関数
dim strRECORD 'レコード内容を一時保存
dim nCNT(10) 'カウンター 変数 10個もいらないけど
dim nSUM '回答の合計数
nSUM = 0 '初期化する
'カウンター変数をループで初期化しておく
For i = 0 to 10
nCNT(i) = 0
Next
'FileSystemObjectを生成します、、って英文、そのままジャン。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
'test016.txt 結果ファイルを読取専用モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test016.txt"), 1, True)
Do While ts.AtEndOfStream = False 'ファイルの終端になってない間ループする
strRECORD = ts.ReadLine 'ファイルからデータを一行を読む
'Left関数を使って左から1文字目をCintで数値変換
i = Cint(Left(strRECORD, 1)) '読みこんだレコードの1文字目を数値変換
'nCNT(i番目)をカウントアップ
nCNT(i) = nCNT(i) + 1
'*2合計数は無条件にカウントアップ
nSUM = nSUM + 1
Loop
ts.close '使ったファイルは閉じようよ
Response.Write "<hr><h3>アンケート集計結果</h3><hr>"
Response.Write "アンケート回答数<b> " & nSUM & "</b>人です" '*4回答数表示
'Array関数を使用して、評価コメントを初期化
strBOX = Array("かなり不満", "不満", "少し不満", "どちらとも言えない", _
"まぁまぁ", "満足", "大変満足")
'結果の表示を<TABLE>タグを使用して表示
Response.Write "<TABLE border=1>" 'border=1で境界線(ワクを表示)
Response.Write "<TR><TD>評価</TD><TD>コメント</TD><TD>人数</TD>"
Response.Write "<TD>%</TD></TR>" '*3 %の見出しを追加
'ループで回して評価の集計データを表示する
For i = 6 To 0 Step -1 '6〜0のループを作る
Response.Write "<TR><TD>" & i & "</TD>"
Response.Write "<TD>" & strBOX(i) & "</TD>"
Response.Write "<TD ALIGN=RIGHT>" & nCNT(i) & "</TD>" 'ALIGN=RIGHT追加
'%を計算して、表示する
strMSG = FormatNumber((nCNT(i) / nSUM) * 100, 1) '計算と変換処理
Response.Write "<TD ALIGN=RIGHT>" & strMSG & "%</TD></TR>"
Next
Response.Write "</TABLE>" '忘れずにテーブルを終わりにする
End Sub
%>
| 最近発売の雑誌を紹介する
たまには、パズルなとで頭を柔らかくしておくと、プログラミングのひらめきもUPするかなぁ・・・
- スケルトン広場 2008年 06月号
- ナンプレランド 2008年 06月号
- アロークロス 2008年 06月号
- 漢字館GOLD (ゴールド) 2008年 06月号
- 漢字道 2008年 06月号
|