<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記事 バックナンバー目次]