<結果のデータをInStr関数を使ってカウントしてみる> こんにちは、Ken3です。 前回、テキストファイルからの読み込み処理を行ったので、 今回は、 ファイルデータを読み込み、カウントしたいと思います。 あまり期待しないでね。 /* * 1.集計元のデータ説明 */ テストデータは、おなじみの?下記のデータを使用します。 test008.txt ( http://www.ken3.org/cgi-bin/test/test008.txt ) に時刻と評価が下記のように書かれています。 2002/12/05 8:11:04 , 満足 2002/12/05 8:14:12 , 普通 2002/12/05 15:53:28 , 満足 ・ ・ ・ 2002/12/07 15:36:54 , 満足 2002/12/07 15:56:49 , 満足 2002/12/07 15:57:22 , 不正なパラメーターです このデータを読み込んで、 満足、普通、不満、を集計(カウント)したいと思います。 今回も、芸が無いなぁ、、、、 /* * 2.一行読み込み後、InStr関数を使ってカウントしてみる。 */ 前回の.ReadLineを参考に読み込み部のループを作成し、 下記のように集計してみました。 --- <%@LANGUAGE=VBScript%> <html> <head> <title>一行読み込み後、InStr関数を使ってカウントしてみる</title> </head> <body> <h2>一行読み込み後、InStr関数を使ってカウントしてみる</h2> test011-1.asp<br> <hr> <% dim strRECORD 'レコード内容を一時保存 dim nCNT01 '満足 カウンター dim nCNT02 '普通 カウンター dim nCNT03 '不満 カウンター nCNT01 = 0 '*1 カウンターを初期化しておく nCNT02 = 0 nCNT03 = 0 'FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") 'test008.txt を読取専用モードで開く Set ts = objFS.OpenTextFile(Server.MapPath("test008.txt"), 1, True) Do While ts.AtEndOfStream = False 'ファイルの終端になってない間ループする strRECORD = ts.ReadLine 'ファイルからデータを一行を読む '*2 InStr関数を使って文字列を探す、見つかったらカウントアップ If InStr(strRECORD, "満足") > 0 Then nCNT01 = nCNT01 + 1 If InStr(strRECORD, "普通") > 0 Then nCNT02 = nCNT02 + 1 If InStr(strRECORD, "不満") > 0 Then nCNT03 = nCNT03 + 1 Loop ts.close '使ったファイルは閉じようよ '*3結果の表示 Response.Write "満足は、" & nCNT01 & "人<BR>" Response.Write "普通は、" & nCNT02 & "人<BR>" Response.Write "不満は、" & nCNT03 & "人<BR>" %> <hr> 終了です<br> <A HREF="test008.txt" target="_new">元データtest008.txtを見る</A><br> </body> </html> --- http://www.ken3.org/cgi-bin/test/test011-1.asp でサンプル実行可能です。 ポイントは、 nCNT01 = 0 '*1 カウンターを初期化しておく nCNT02 = 0 nCNT03 = 0 で、初めにカウンター変数を初期化しておきます。 次が今回の講座の内容なんだけど、 '*2 InStr関数を使って文字列を探す、見つかったらカウントアップ If InStr(strRECORD, "満足") > 0 Then nCNT01 = nCNT01 + 1 If InStr(strRECORD, "普通") > 0 Then nCNT02 = nCNT02 + 1 If InStr(strRECORD, "不満") > 0 Then nCNT03 = nCNT03 + 1 これは、 InStr関数が、文字列を継がす関数で、 InStr(元の文字列, 検索文字列) 機能は、見つかった場所(n文字目)を結果で返します。 また、見つからなかった時は0を返してくれます。 で、If文と組み合わせて、 If InStr(strRECORD, "満足") > 0 Then nCNT01 = nCNT01 + 1 と0以上の時は見つかったと判断、カウントアップしてます。 最後に結果を '*3結果の表示 Response.Write "満足は、" & nCNT01 & "人<BR>" Response.Write "普通は、" & nCNT02 & "人<BR>" Response.Write "不満は、" & nCNT03 & "人<BR>" で、単純に表示してます。 /* * 3.終わりの挨拶 */ 今回は、文字列を探す関数 InStrを使って、 アンケート結果を集計してみました。 なんか、キレが無かったなぁ、、、サンプルも1つだったしね。 まだまだ、道のりは遠いなぁ〜 またね(笑) 何か質問・感想があったら、気軽に、 メール、掲示板に書き込んでくださいね。 三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[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記事 バックナンバー目次]