[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.014 外見の調整とArray関数を使用して配列作成

外見の調整とArray関数を使用して配列作成



本文(発行内容)


<外見の調整とArray関数を使用して配列作成>

こんにちは、Ken3です。

前回は、
配列変数を使って、プログラムの中身をスッキリさせました。
でも、
世の中、中身も大切ですが、外見も重要みたいです。
男性も化粧する、そんな時代なので(オイオイ、ホントか?)
今回は、アンケート結果の出力に少し化粧してみます。(見やすく)
えっ、元が悪いと化粧もイミナイって?そんなぁ〜

あまり期待しないでね。

/*
 * 1.素顔で勝負(笑)、データを素で表示
*/

テキストファイルの処理もマンネリ化した今日この頃、
そろそろDBでもやるか?
じゃなくって、
アンケートの集計結果、そのまま下記のようにデータ件数を表示してます。

集計結果:  http://www.ken3.org/cgi-bin/test/test013-3.asp  より
----
6、大変満足は、1人
5、満足は、2人
4、まぁまぁは、1人
3、どちらとも言えないは、4人
2、少し不満は、2人
1、不満は、2人
0、かなり不満は、2人
----

見易いとは、お世辞でも言えないよね。
Ken3をヨイショする理由も無いし(笑)

家の中(社内システムなど身内しか見ない)や自分の部屋(マイマシーン)
ではいいかもしれないけど
外出る時は(インターネットで公開)、
少しぐらい化粧したら?

私は、素顔で勝負の女(男)だからね、いいよまわりは気にしないし。

それだと話が終わってしまうので、
そろそろ、マジメに見た目にこだわってみます。

/*
 * 2.<TABLE>タグでデータを整える(表にする)
*/

まずは、バラバラな出力を整えます。

6、大変満足は、1人
5、満足は、2人
4、まぁまぁは、1人
3、どちらとも言えないは、4人

を

評価                      人数
6 大変満足は、           1人
5 満足は、               2人
4 まぁまぁは、           1人
3 どちらとも言えないは、 4人

項目名を付けて、表にするか。


-- http://www.ken3.org/cgi-bin/test/test014-1.asp  
<%@LANGUAGE=VBScript%>
<html>
<head>
<title><TABLE>タグを使用してみた</title>
</head>
<body>
<h2><TABLE>タグを使用してみた</h2>
test014-1.asp<br>
<hr>

<%
dim strRECORD  'レコード内容を一時保存
dim nCNT(10)   'カウンター 変数 10個もいらないけど

'カウンター変数をループで初期化しておく
For i = 0 to 10
    nCNT(i) = 0 
Next 

'FileSystemObjectを生成します、、って英文、そのままジャン。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")

'test013.txt 結果ファイルを読取専用モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test013.txt"), 1, True)

Do While ts.AtEndOfStream = False  'ファイルの終端になってない間ループする
    strRECORD = ts.ReadLine   'ファイルからデータを一行を読む
    '*3 Left関数を使って左から1文字目をCintで数値変換
    i = Cint(Left(strRECORD, 1))  '読みこんだレコードの1文字目を数値変換
    '*4 nCNT(i番目)をカウントアップ
    nCNT(i) = nCNT(i) + 1
Loop

ts.close  '使ったファイルは閉じようよ

'*1結果の表示を<TABLE>タグを使用して表示
Response.Write "<TABLE>"
Response.Write "<TR><TD>評価</TD><TD>コメント</TD><TD>人数</TD></TR>"
Response.Write "<TR><TD>6</TD><TD>大変満足</TD><TD>" & nCNT(6) & "</TD></TR>"
Response.Write "<TR><TD>5</TD><TD>満足</TD><TD>" & nCNT(5) & "</TD></TR>"
Response.Write "<TR><TD>4</TD><TD>まぁまぁ</TD><TD>" & nCNT(4) & "</TD></TR>"
Response.Write "<TR><TD>3</TD><TD>どちらとも言えない</TD><TD>" & nCNT(3) & "</TD></TR>"
Response.Write "<TR><TD>2</TD><TD>少し不満</TD><TD>" & nCNT(2) & "</TD></TR>"
Response.Write "<TR><TD>1</TD><TD>不満</TD><TD>" & nCNT(1) & "</TD></TR>"
Response.Write "<TR><TD>0</TD><TD>かなり不満</TD><TD>" & nCNT(0) & "</TD></TR>"
Response.Write "</TABLE>"

%>
<hr>
アンケート結果はこんな感じです。<br>
<A HREF="test013.txt" target="_new">元データtest013.txtを見る</A><br>
<br>
</body>
</html>
-- 

実行すると、結果の表示は、こんな感じでした。
評価 コメント          人数 
6   大変満足           1 
5   満足               2 
4   まぁまぁ           1 
3   どちらとも言えない 2 
2   少し不満           2 
1   不満               1 
0   かなり不満         1 


'*1結果の表示を<TABLE>タグを使用して表示
Response.Write "<TABLE>"
Response.Write "<TR><TD>評価</TD><TD>コメント</TD><TD>人数</TD></TR>"
Response.Write "<TR><TD>6</TD><TD>大変満足</TD><TD>" & nCNT(6) & "</TD></TR>"
Response.Write "<TR><TD>5</TD><TD>満足</TD><TD>" & nCNT(5) & "</TD></TR>"
Response.Write "<TR><TD>4</TD><TD>まぁまぁ</TD><TD>" & nCNT(4) & "</TD></TR>"
Response.Write "<TR><TD>3</TD><TD>どちらとも言えない</TD><TD>" & nCNT(3) & "</TD></TR>"
Response.Write "<TR><TD>2</TD><TD>少し不満</TD><TD>" & nCNT(2) & "</TD></TR>"
Response.Write "<TR><TD>1</TD><TD>不満</TD><TD>" & nCNT(1) & "</TD></TR>"
Response.Write "<TR><TD>0</TD><TD>かなり不満</TD><TD>" & nCNT(0) & "</TD></TR>"
Response.Write "</TABLE>"
が
修正したプログラム場所です。

化粧と言うか、ぷっ(笑)、厚化粧だよね。
ほんと、ほんと、自分でも笑っちゃうよね書いてて。

/*
 * 3.Arrayを使って配列を初期化
*/

さて、中途半端に厚化粧したけど、本人も納得してないので、
気分を変えて、中身の処理も少し変えてみます。

配列の初期化で、Array関数を使った方法があります。
strBOX = Array("満足","普通","不満")
とやると、
strBOX(0)に満足、(1)に普通...と配列の0番目からデータを作成してくれます。

こいつを使用して、下記のように書いてみました。

-- http://www.ken3.org/cgi-bin/test/test014-2.asp
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>Array関数を使用して配列の初期化</title>
</head>
<body>
<h2>Array関数を使用して配列の初期化</h2>
test014-2.asp<br>
<hr>

<%
dim strRECORD  'レコード内容を一時保存
dim nCNT(10)   'カウンター 変数 10個もいらないけど

'カウンター変数をループで初期化しておく
For i = 0 to 10
    nCNT(i) = 0 
Next 

'FileSystemObjectを生成します、、って英文、そのままジャン。
Set objFS = Server.CreateObject("Scripting.FileSystemObject")

'test013.txt 結果ファイルを読取専用モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test013.txt"), 1, True)

Do While ts.AtEndOfStream = False  'ファイルの終端になってない間ループする
    strRECORD = ts.ReadLine   'ファイルからデータを一行を読む
    '*3 Left関数を使って左から1文字目をCintで数値変換
    i = Cint(Left(strRECORD, 1))  '読みこんだレコードの1文字目を数値変換
    '*4 nCNT(i番目)をカウントアップ
    nCNT(i) = nCNT(i) + 1
Loop

ts.close  '使ったファイルは閉じようよ

'*2Array関数を使用して、評価コメントを初期化
strBOX = Array("かなり不満", "不満", "少し不満", "どちらとも言えない", _
               "まぁまぁ", "満足", "大変満足")

'*1結果の表示を<TABLE>タグを使用して表示
Response.Write "<TABLE border=1>"   'border=1で境界線(ワクを表示)
Response.Write "<TR><TD>評価</TD><TD>コメント</TD><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>" & nCNT(i) & "</TD></TR>"
Next

Response.Write "</TABLE>"   '忘れずにテーブルを終わりにする

%>
<hr>
アンケート結果はこんな感じです。<br>
<A HREF="test013.txt" target="_new">元データtest013.txtを見る</A><br>
<br>
</body>
</html>
---

修正したポイントを書くと、
まず、使用する評価コメントを配列に代入しました。

'*2Array関数を使用して、評価コメントを初期化
strBOX = Array("かなり不満", "不満", "少し不満", "どちらとも言えない", _
               "まぁまぁ", "満足", "大変満足")
と、Array関数を使ってます。

隠された?ポイントとして、
 "どちらとも言えない", _ ←ここのアンダーバー気になりました?
一行に命令やパラメータを書けない時や、
書けてもダラダラと続けるのがイヤな時、
_ を行末に付けて、記述することができます。

次に表示で、ループ処理を使って、各配列を6〜0まで表示してます。

'*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>" & nCNT(i) & "</TD></TR>"
Next

ポイントは、
For i = 6 To 0 Step -1
で、通常はカウンターは+1していくのを、
Step −1
で、6から−1してます。

表示が同じだと、芸が無いので、
Response.Write "<TABLE border=1>"   'border=1で境界線(ワクを表示)
とTABLEタグのパラメータ、境界線border=1として、ワクを書いて見ました。

/*
 * 4.プログラムも大事、見せ方も大事
*/

まぁ、言いたかったのは、

前回は、同じ処理をするんだけど、
今後の修正・保守性を考えたプログラムを書きましょう。

今回は、同じ内容のデータを出力するんだけど、
見えない中身よりも、目に見える外見も重要ですよ。
集計結果表示:
http://www.ken3.org/cgi-bin/test/test013-3.asp  ←そのまま人数を表示
http://www.ken3.org/cgi-bin/test/test014-1.asp  ←表(TABLE)にした
http://www.ken3.org/cgi-bin/test/test014-2.asp  ←表にワクをつけた
でした。

まぁ、中身も外見もバランス良くですが。
(さらに進むと、厚化粧で時間をかけるよりは、そのままでもって意見もあるよ)

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

今回は、
・TABLEタグを使ってデータの見せ方を変えてみた
・Arrayを使って配列を初期化
・中身と外見のお話
でした。

結果の見せ方も、いろいろな書き方あるので、
人を振り向かせる、夢中にさせるページをみなさんは書いてくださいね。

姿だけ美人やイケメン君でも中身が無いと、すぐにフラレでしまうけどね。
えっ、中身はそんなに変わらないんだから、美人・イケメンのほうがいいって?
う〜ん、、、まぁ、バランスだと思うけど(笑)

最強ページへの道のりは遠いなぁ〜。

またね(笑)

何か質問・感想があったら、気軽に、
メール、掲示板に書き込んでくださいね。

三流プログラマーの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記事 バックナンバー目次]


広告: