[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.060 しつこい加筆解説、学習方法、拾ったサンプルソースをものにする方法

しつこい加筆解説、学習方法、拾ったサンプルソースをものにする方法



本文(発行内容)


<しつこい加筆解説、学習方法、拾ったサンプルソースをものにする方法>

こんにちは、三流プログラマーのKen3です。 前回のNo.59に文章を付け足しただけですが 学習方法、拾ったサンプルソースをものにする方法 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ として、再度追加発行します。 発行前にもっと内容、見たほうがよかったですね。 くだらない解説付のほうがいいのか? それとも マジメな解説がいいのか? 迷うところだけど。 基準として、 同じネタでも毒吐いてるのは、 http://www.ken3.org/guchi/ のプログラマー愚痴系で、 http://www.ken3.org/asp/ のASP系は、マジメに解説しようと思っているのですが、 同じ作者なので、時々、まざってしまうけど、ご勘弁を。 拾い読みして、何かの参考となれば幸いです。

/* * 1.今回のキッカケ */

ASPでExcelの処理、ADO使ってごまかしたけど、 他に方法無いか?模索中・・・・ そしたら、マイクロソフトのHPから、おっ?と思うサンプルを拾う。 拾ったサンプルを自分のものにした、そんなストーリーを書きます。 元ネタは、ASPですが、他の言語でもやりかたは一緒だと思うので、 何かのきっかけとなれば、、、、 いつもの三流プログラマーの語りから、何かをつかんでくれれば幸いです。

/* * 2.拾ったサンプル */

ASP Excel でいろいろと検索、巡回してました。 いろいろと出てきますねぇ、要望が多いのかなぁ。 私のつぶされそうなカスページにもポツポツ検索で来るし、 おっ、マイクロソフトのサンプルページかぁ、 よし、見てみるか。 ※てな感じで、みなさんも必要なサンプルを探していると思います。 http://msdn.microsoft.com/library/en-us/dnwebteam/html/webteam07032000.asp ちっ、ここも英語かよ、日本語のサンプルは無いの? それとも日本語化される前に、ASP.NETになっちゃったの? サンプル、見つかっても英語の時、ガックリ来ますよね。 なんて前置きは置いといて、 いつもの台詞で、英語読めないけどプログラムソースはなぜか読める そんな三流プログラマーが下記のソースを拾ってきた。 ※ページの下のほうに転がってました あきらめないで、読めないのに軽く流し読みすると、 たまに自分の目にソースファイルが飛び込んでくる。 英語読めないけど(コメントやメッセージの意味は不明) でも、VBAやASPの言語仕様は万国共通なので、 ソースファイルはなぜか不思議とある程度は読むことが出来ると思う。 <%@ language=vbscript %> <% response.buffer = true response.ContentType = "application/vnd.ms-excel" response.AddHeader "content-disposition", "inline; filename=dynamic.xls" response.write "<table width=200>" response.write "<tr>" for i = 1 to 4 response.write "<td width=40>" response.write i + i response.write "</td>" next response.write "<td width=40><b>=sum(A1:D1)</b></td>" response.write "</tr>" response.write "</table>" response.flush response.end %> response.writeで出力しているみたいだなぁ、 で、中身をざっと見てみると、 response.ContentType = "application/vnd.ms-excel" response.AddHeader "content-disposition", "inline; filename=dynamic.xls" とExcel処理の匂いがプンプン。 ※夏の女性の匂いに引き付けられないで、  サンプルの匂いに魅かれてちゃダメだよ。 ここで、私がもしかしたら使えるのかも?と思ったのが、 response.write "<td width=40><b>=sum(A1:D1)</b></td>" と、セルの集計関数の=Sumを使っている場所。 データだけならCSV経由でサーバーから落として、 あと好きなように加工してね、、とやるんだけど、 もし=Sumなどワークシート関数使えるなら、 結果をASPからExcelで返す時、いろいろと使えるのでは? で、上記ソースをまるごとコピーして、実行してみました。 http://www.ken3.org/cgi-bin/test/test059-1.asp で実行できます。 すると、いつものxlsファイルを開く、保存の警告メッセージ。 ってことは、Excelのファイルとして認識? ※↑メッセージ画面 開くを選択して、開いてみると、=SUMの計算式が埋まっていた。 ※↑開いたイメージ。

/* * 3.拾ったサンプルを解析して自分のものにする */

さてと、そんな方法でExcelファイルを返すことが出来たので、 拾ったサンプルを自分のものにするために、 わからないことを探りますか。 ここが学生さんのレポートを丸写しで終わっていた課題と違うところかな ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 自分のものにしないとメルマガ読んでるだけじゃ意味無しですよ。 response.buffer = true を調べると、 response.buffer = true の時は、出力をバッファして、 response.flush 途中でバッファを出力 response.end  ASPの処理を中止し、現在までの結果を返すのかぁ。 なるほどね。 関連項目として、今回出てこなかったけど、 response.clear ってのがあって、バッファに格納された出力をクリアすることが出来ます。 このクリアを使って、エラーが発生したら、途中までの出力を消して、 エラーのメッセージ画面を表示することも出来そうです。 ※また注意事項として、  response.buffer = trueは、<Html>などの出力の前に行うことです。  まぁ、出力のバッファだから、一番最初にやれってことね。 こんな、流れで、自分の知らない命令をヘルプで調べたり、 初めの調査はASP Excelだったのに、 芋ずる式にresponse.bufferを調べるようになり、自分のものになっていく。 また、自分で調べると関連項目、ここではサンプルに載っていなかった response.clear って出力をクリアする処理をついでに覚えて、 途中までの出力をクリア(キャンセル)して、新たなエラーなどを出力できる。 そんな処理方法まで、学習してしまった。 次は、 response.ContentType = "application/vnd.ms-excel" これは、今から送るデータのタイプは、 "application/vnd.ms-excel" ですよ、とブラウザに教えるために書きます。 response.ContentType = "imge/gif" など、指定します。 文字データだけじゃなくて、ASPでいろいろと出来るんだね、、と感じた。 ここは、これで止めてしまったが、 自分の学習リストをメモ帳などのテキストで残しておき、 ヒマなとき、response.ContentType = "imge/gif"を調べる、、、 なんてやっておくと、幅広く知識を吸収できます。 response.AddHeader "content-disposition", "inline; filename=dynamic.xls" これは、詳しく載っていなかったけど、 動作や.AddHeaderから判断すると、ヘッダ情報にファイル名を載せている感じです。 response.write "<table width=200>" response.write "<tr>" ↑この、Excelファイルなのに、普通のテーブルってのが不思議だけど、  ※不思議に感じたら、調べろよ、なぜか?理由があるダロ。   疑問のまま素通りすると、私みたいな三流プログラマーなんですね。   こんな疑問も、テキストファイルのリストに書いておくといいですよ。   (貯まっていくと、イヤになったり、どれからやるか迷うので、    ほどほどにね。。。) for i = 1 to 4 response.write "<td width=40>" response.write i + i response.write "</td>" next TDだから、横に数値を書き込んで、 ※自分で知識があるから、さらっと読めるけど(読めたけど)  ASPやHTMLやったこと無い人は、<TD>って何?  から解析に入らないといけないので、  ソースを拾って読むには、ある程度の知識が必要とフト思いました。 response.write "<td width=40><b>=sum(A1:D1)</b></td>" ここが一番感動した、 =Sum とワークシート関数を入れている部分です。 普通にテーブルイメージなんですね。 ※解析してて嬉しくなる、、そんな感覚があると思います。  下ばかり見て歩いてないで、周りをよく見て歩いていたら、  風がふいて・・・いいもの目撃・発見、、なんてことは無いかな(謎)  変な想像したアナタ、あたりだよたぶんその想像が(笑) response.write "</tr>" 行の終了、 response.write "</table>" テーブルの終了 response.flush バッファを出力 response.end ASP終了 って流れでした。 こんな感じで、拾ってきたソースサンプルを 自分の知識にすることができました。 なんて流れるように書いてるけど、 これは私の数少ない成功例 ^^^^^^^^^^^^^^^^^^^^^^^^ 実際は、解析途中で断念したり、 棚上げ後回しの拾ってきたソース君達も多いです。 全て、こんな方法で知識を吸収はできないのですが、 方法の1つとして、感覚だけでもつかんでもらえて、 成長のキッカケとなればうれしいです。

/* * 4.終わりの挨拶(次回はアルのか?(爆)) */

内容は同じだったのですが、 学習をテーマに加筆してみました。 たまにこんな感じで、加筆発行するかもしれませんが、 よろしくお願いします。 ※あっ、うざいって人は、  http://www.mag2.com/m/0000099248.htm  でメルマガの方を解除して、 http://www.ken3.org/asp/ のHPをたまに覗きに来て下さい。  内容は同じなので。 何か読者の心に残れば、うれしいです。 *私の独り言をうまく消化してくださいね。 いつも失敗?の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記事 バックナンバー目次]


広告: