<001行目と表示したくてRight関数を使う>
こんにちは、Ken3です。
今回も、軽くで、
001と表示したくてRight関数を使う
です。
あまり期待しないでね。
/*
* 1.001行目と桁をそろえて表示してみたいとフト思う
*/
前回の
http://www.ken3.org/cgi-bin/test/test018-1.asp
をテストで実行すると、
行番号と5行単位で区切られて表示してました。
1行目 2002/12/05 8:11:04 , 満足
2行目 2002/12/05 8:14:12 , 普通
3行目 2002/12/05 15:53:28 , 満足
4行目 2002/12/05 15:53:44 , 不満
5行目 2002/12/05 19:41:41 , 不満
---------------------------------
6行目 2002/12/06 13:10:22 , 満足
7行目 2002/12/06 13:10:40 , 不正なパラメーターです
8行目 2002/12/06 15:28:53 , 満足
9行目 2002/12/06 15:29:34 , 普通
10行目 2002/12/06 15:29:35 , 不満
---------------------------------
11行目 2002/12/06 16:19:12 , 不満
これでもいいんだけど、
ふと、
1行目
の行番号を
001行目
と桁数を3桁固定にしてみたくなりました。
/*
* 2.あれ?Format関数って使えないの?
*/
VBAも少し知ってる私は、
有名なFormat関数を使用して、
Format(カウンター,"000")
にすればOKだと思い軽く修正しました。
Do While ts.AtEndOfStream = False '*6ファイルの終端になってない間ループ
strDATA = ts.ReadLine 'ファイルからデータを一行を読む
nLINE = nline + 1 '行カウンタを+1する
Response.Write Format(nLINE,"000") & "行目 " '*1行番号の表示
Response.Write strDATA '読み込んだデータを表示
Response.Write "<BR>" '改行のタグを入れる
'行カウンタが5、10、15、、5で/って余りが0なら
'<HR>タグを挿入する
If nLINE Mod 5 = 0 Then
Response.Write "<HR>" 'タグを入れる
End If
Loop
の表示部分を、
Response.Write Format(nLINE,"000") & "行目 " '*1行番号の表示
に変えました、余裕でしょ。
あれ?
エラー タイプ
Microsoft VBScript 実行時エラー (0x800A000D)
型が一致しません。: 'Format'
/test/test019-1.asp, line 26
ウソでしょ?エラーだよ。
なんで?
何でジャねぇダロ三流君、
ASP(VBScript)に、
Format関数は無いんだよ。存在しないの。
またまたぁ。
と
思い、少し調べてみると、やはり無いみたい。
/*
* 3.違う関数で代用するか(Right関数を使用する)
*/
無いものはしょうがない、作るか。
なんて話を大きくしないで、
違う関数で代用してみます。
代用?どんな感じで?
よく使っている&の文字列連結
と
文字列の右から取ってくるRight関数
を組み合わせて使ってみます。
Right関数の書式は、
Right(文字列,抜き出す文字数)
なので、
Right("000" & カウンタ変数, 3)
で、
頭に000を強引に付けてから、右3文字を取ります。
カウンタが1の時は"000"に1を連結後の
0001の右から3文字取るので、
001となり
カウンタが12の時は、"000"に12を連結後の
00012の右から3文字取るので
012となります。
/*
* 4.Right("000" & nLINE, 3)でなんとか完成
*/
Right("000" & nLINE, 3)に修正すると、
-- test019-1.asp
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>Right("000" & nLINE, 3)を使用して001の三桁で表示</title>
</head>
<body>
<h2>Right("000" & nLINE, 3)を使用して001の三桁で表示</h2>
test019-1.asp<br>
動作仕様:<br>
test008.txtを読み込み、5行単位で線を引く(<HR>タグを入れる)<br>
行番号を001の三桁0付きで表示する<br>
<hr>
<%
'FileSystemObjectを生成します
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
'test008.txt を読取専用モードで開く
Set ts = objFS.OpenTextFile(Server.MapPath("test008.txt"), 1, True)
Dim nLINE '行数のカウンター
nLINE = 0 'カウンターを初期化
Do While ts.AtEndOfStream = False '*6ファイルの終端になってない間ループ
strDATA = ts.ReadLine 'ファイルからデータを一行を読む
nLINE = nline + 1 '行カウンタを+1する
Response.Write Right("000" & nLINE, 3) & "行目 " '*1行番号の表示
Response.Write strDATA '読み込んだデータを表示
Response.Write "<BR>" '改行のタグを入れる
'行カウンタが5、10、15、、5で/って余りが0なら
'<HR>タグを挿入する
If nLINE Mod 5 = 0 Then
Response.Write "<HR>" 'タグを入れる
End If
Loop
ts.close '使ったファイルは閉じようよ
%>
<hr>
<A HREF="test008.txt">使用したtest008.txtを見る</A><br>
<br>
</body>
</html>
---
なんとか、
Response.Write Right("000" & nLINE, 3) & "行目 " '*1行番号の表示
で無事にできました。
http://www.ken3.org/cgi-bin/test/test019-1.asp
を見て笑ってください。
/*
* 5.終わりの挨拶
*/
今回は、
・えっ、VBAで有名なFormat関数無いの?
・Right("000" & nLINE, 3)でかわしてみました
でした。
できないとあせるけど、
プログラムって、楽しいでしょ?
Right("000" & nLINE, 3)
は
苦肉の策だったけどね。
最強ページへの道のりは遠いなぁ〜。
またね(笑)
何か質問・感想があったら、気軽に、
メール、掲示板に書き込んでくださいね。
三流プログラマーの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記事 バックナンバー目次]