[三流君] −−> [プログラマー業務の愚痴] −−> [バックナンバー一覧]
−−> No.166 劣悪環境が人を育てたりもする?

劣悪環境が人を育てたりもする?


本文(発行内容)


<劣悪環境が人を育てたりもする?>

こんにちは、三流プログラマーのKen3です。 どちらかと言えば、恵まれた環境で育っているお坊ちゃんかなぁ。 今は珍しくは無いんだろうけど、中学の頃から家のパソコン触れてたしね。 そんな前フリは置いといて、 今回は、劣悪環境が人を育てたりもする?工夫して目的にたどり着く努力?です。 いい環境で自分は育ちたい、後輩はいい環境で育ててみたいが普通だけど、 環境が悪くて得をする?そんな不思議なこじつけ話もあるんだなぁと軽く読んでね。 まぁ、いつもの独り言だけど、聞いてください。

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

一番人気の無いメルマガ、 ASPで楽しく( http://www.ken3.org/asp/ )で、 下記のようなクレームをもらってしまった。 ※また、クレームをネタにするの(笑) 内容は、 GoogleでASPとExcelをキーワードで検索すると私のHPがみつかる。 だが、サンプルが無い。 ASP Create Excelとかキーワードを変えて検索しても、 アンタのダメなページがHITする。 まぁ、要約するとこんな感じの苦情メールが届いた。 ASPからExcelを操作するにはどうするんですか? と質問メールならまだ、ゆるせるけど、 そんな苦情のメール送る時間あるなら他のHP調べなよ と半分逆ギレで言いたかったが。。。 おっと、クレームは天の声だったっけ。 まぁ、原因はVBA系のHPで[ASP系へ]とリンクがあるので、 CreateObject("Excel.Appliction")の解説ページが、 キーワードでASP Excelで拾われてしまうかぁ。 クレームに怒ってないで、 ASPからExcelファイルの操作、やってみるか。 と軽く思ったのが、ハマる原因だった。。。 結果を先に話すと、 Server.CreateObject("Excel.Application") がエラーで、ADOを使用してExcelのデータを参照してお茶を濁したんだけど。

/* * 2.話を強引に広げてみる */

さてと、Excelを参照したいんだったら、 Set oApp = Server.CreateObject("Excel.Application") で、勝負。 あれ? Server オブジェクト エラー 'ASP 0177 : 800401f3' Server.CreateObject に失敗しました /cgi-bin/test/test053-1.asp, 行 13 無効な ProgID。 このメッセージに関する追加情報については、以下のマイクロソフト オンライン サポートのサイトを参照してください: えっダメなの、、、そっか、WebサーバーにExcelがセットアップされて無いと、 オブジェクトを作成することが出来ないのか。。。 ※あたりまえでしょ。 WebサーバーにExcelがセットされていると、 Set oApp = Server.CreateObject("Excel.Application") とVBAのAccess -- Excel コントロールみたいに比較的簡単です。 余談 レンタルサーバーの痛いところかなぁ。 自社のサーバーだったら、無いものは入れてしまえって出来るけど、 レンタルの共有だと、そんなわけにはいかないか。。。 Server.CreateObject("basp21pro")が使えたので、もしかしてと思ったけど甘かった。 宣伝 私が現在使っているレンタルサーバーの紹介、 http://www.ken3.org/asp/server.html ASP で Access MDB が使用可能 Server.CreateObject("ADODB.Connection")で BASP21Pro でメールが送信可能 Server.CreateObject("basp21pro") が使用可能、 検討してみてね(HPから申し込んで手数料Getさせて(爆)) ※でも、今回の、 Set oApp = Server.CreateObject("Excel.Application") は、ムリです。 レンタルサーバーの環境が整っていないからなぁ 環境が悪いんだよね、環境が・・・ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 環境がそろっていれば、オレ様が活躍できるのに、環境がそろっていれば。 [No.96 環境かぁ、、ヤッパ?] http://www.ken3.org/backno/backno_guchi19.html#96 成長しないのをまわりのせいにしたり、してませんか・・・ 的なことを書いてました。環境が人を変えるのだが、環境のせいにしないでね。 [No.97 新人さんへ それとも 自分へ?] http://www.ken3.org/backno/backno_guchi19.html#97 ....「やる人」と「やらない人」の違い これは、イタイとこ突かれたなぁ。。。 そんなこんなで、 環境のせいにしてあきらめてしまっては、成長しないんですね ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ちっ、しょうがねえなぁ、うちの会社貧乏だからと文句を言いつつ 他の方法もあるかもしれない、調べてみようと思って、行動すると、 違う手法を勉強、取得できて、自分の実力がついたりする(はず) ※自力でがんばんないで、ライブラリを買ったり、  お金かけて環境のほうを整備して対応が正解の時もあるけど。 アプリの機能を使わないでデータセットだけなら何か方法あるだろう。 まずは、データの枠だけ作っておくか。 Excel立ち上げて、 ブックの名前はtest053.xls シートの名前はDATA 項目とデータを適当に入れてと A列 B列 C列 USERNAME MEMO WriteTime Ken3 メモメモ 2003/5/15 TEST なぜ?出来ないの? 2003/5/13 -- と表を作成しました ↑作成した表のイメージ 次は、この表を外部から操作するのかぁ。 流行中のADOでxlsと接続してみますか。 どこかの雑誌の記事で、ADOでExcelデータ参照とか載ってた記憶あるし。 ※何気ない雑誌の記事や、HP、MLなどの記憶が役に立つときもある。  でも、再度その記事を探そうとして見つからない時の悲しさは笑えるよ。 Googleの検索で、 ADO Excel 接続 と入れると、星の数ほどサンプルが出てくる。 大体がAccessからADOでExcelと接続のパターンです。 で、ODBCとかサーバー側の設定をイタズラできないので、 (環境がODBCを設定できる環境なら、ここから先にも進まなかったかも) 情報をしぼっていく、それとヘルプを見ながら何とか作成のメドを立てる。 一番参考になったページは、 ADO Recordset - Database - Excel 97 http://kobobau.com/xls/yama/vba/db.ado1.html です、ここ見てねで終わってもいいくらい、 ADO関係、丁寧な解説でした。私も見習わないと(笑) ※他にもいいページがGooleの検索で出てきますね。 まずは、 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") と、ADOのレコードセットのオブジェクトを作成します。 次は、接続文字を設定します。 Con = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _ Server.MapPath("test053.xls") & ";" 呪文のように使っているけど、 Driver=で使用するドライバー、 DBQ=で位置を渡しているみたいなので、詳しくヘルプで探って、 Excel以外でも対応可能か?今後見てみたいですね。 次はお約束のSQL文です。 シート名がDATAなので、 strSQL = "select * from DATA" と設定、(※ウソついてます、詳細は続きを見てください) さて、パラメータがそろったから、レコードセットを開きますか。 '接続文字列、SQLを渡して、レコードセットを開く Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly よし、ここまでの簡単なプログラムで実行してみる。 あれ、下記のようなエラーが出た。 Microsoft OLE DB Provider for ODBC Drivers エラー '80040e14' [Microsoft][ODBC Excel Driver] SQL ステートメントが正しくありません。 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、または 'UPDATE' を使用して ください。 Microsoft OLE DB Provider for ODBC Drivers エラー '80040e37' [Microsoft][ODBC Excel Driver] オブジェクト 'DATA' が見つかりませんでした。 オブジェクトが存在していること、名前やパス名が正しいことを確認してください。 う〜ん、なんだろう? DATAシートが見つからないのかぁ。 [No.137 成功や失敗の経験値を貯めよう] http://www.ken3.org/backno/backno_guchi27.html#137 成功例だけじゃなく失敗例も集めようって話、 パターンで失敗は成功の元につなげる。 サンプルのコピーでストレートにできなくて、 試行錯誤したり、調べたりすると、それだけで実力がつく場合がある。 みなさんも、教えられた方法できなかった時は、いきなり先輩に聞かないで、 自分で少しは調べてみると自然と実力が上がると思います。 話を元に戻してと、 あっ、シート名じゃなくて、名前付けした範囲じゃないとダメみたい。 よし、ExcelセルにDATA_RANGEと名前を付けます。 ↑Excelメニューから挿入--名前--定義で名前を設定する。 strSQL = "select * from DATA_RANGE" と今セルに付けた名前の範囲を使用します。 エラー無くやっと終了。 あとは、レコードの中身を表示をプラスして、下記のように作成しました。 http://www.ken3.org/cgi-bin/test/test053-1.asp でテストできます。 <%@LANGUAGE=VBScript%> <html> <head> <title>ASPからADOを使用してExcel(*.xls)に接続してみた</title> </head> <body> <h2>ASPからADOを使用してExcel(*.xls)に接続してみた</h2> test053-1.asp<br> ASPからADOを使用してExcel(*.xls)に接続するテストを行う<br> <hr> <% 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") strSQL = "select * from DATA_RANGE" Con = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _ Server.MapPath("test053.xls") & ";" Response.Write "作った、使った接続文字列は<br>" & Con & "<hr>" '接続文字列、SQLを渡して、レコードセットを開く Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly strOUT = "" Do While Rs.EOF = False For Each FieA In Rs.Fields strOUT = strOUT & FieA.Name & " -- " & FieA.Value & "<BR>" Next Rs.MoveNext '次のレコードへ移動 Loop Rs.Close Set Rs = Nothing Response.Write strOUT '結果を表示 %> <hr> [<a Href="test053.xls" TARGET="_blank">test053.xlsを開く</a>]<br> </body> </html> ポイントは、 わかってしまえば流れるように進み、簡単なんだけど、 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") と、レコードセットのオブジェクトを作成。 strSQL = "select * from DATA_RANGE" Con = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _ Server.MapPath("test053.xls") & ";" SQL文と接続のパラメータを設定。 Driver={Microsoft Excel Driver (*.xls)} と呪文のように(笑) '接続文字列、SQLを渡して、レコードセットを開く Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly と、レコードセットを開きます。 あとは、いつものように Do While Rs.EOF = False For Each FieA In Rs.Fields strOUT = strOUT & FieA.Name & " -- " & FieA.Value & "<BR>" Next Rs.MoveNext '次のレコードへ移動 Loop 得意な?ループ処理とADOレコードセットに対しての処理です。

/* * 3.環境がそろっていなくても、、、(本音はそろっていると楽だけど) */

Server側にExcelがインストールされていない環境だったので CreateObjectが使えなかったので、 たまたま、別の方法を試行錯誤して、ADOでExcelの接続を私が覚えたって話でした。 もし、Excelが使えるレンタルサーバーだったら、 ADOでExcelの接続は調べないで、 いつもの方法、CreateObjectでオブジェクト作成し操作のパターンだったと思います。 サーバー環境の話から職場環境の話に飛ぶけど、 手取り足取りなんでも教えてくれるやさしい先輩、いい環境にタダ座っている人と、 冷たいほったらかしの先輩、自分で調べるしか生き残れない最悪環境、 どっちもどっちだけどね。 あっ、一番いいのは、十分な環境で簡単にやりつつ、 自分にハンデじゃないけど、使いやすい方法を置いといて、 使いにくい方法も空いた時間に試してみる研究心や探究心があるのが、 一番いいのかなぁ。 結局、環境もあるけど、自分の意思で動き回ろうよ、、ってことかな。 この不況の悪環境から育つ方法を私も考えて実践しないとなぁ(笑)

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

よくわからなかったけど、何が今日は言いたかったの? えっと 環境にめぐまれてないと、必要に迫られて育つ、工夫する って話でした。 何か読者の心に残れば、うれしいです。 *私の独り言をうまく消化してくださいね。 そろそろ派遣かなぁのKen3でした。 ~~~~~~~(↑オイオイ)


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

リンクや広告など

項目別に本音?それとも建て前?的な記事をまとめました。

気になったジャンル↓を選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]