ASPって何? 始めの一歩    2005.6.16 〜


    いきなり蹴躓いてしまった ASP である。まぁ、PHP と比べたら本屋に並んでいる本の種類も少なくメジャーではないような気がするが、Windows サーバを動かしているので、あえて ASP を実験してみた。しかし、すんなりは動いてくれなかった。少しずつ見えてきたのでその経緯を忘れないうちにメモっておこうと、このページを作った。なにも知らないものがどこまでやれるかっていう意味合いもあり、また MS Access などとどんな連携がとれるかを確認したいという動機もあり、いろいろチャレンジしてみようという主旨である。
    よってこれから順次追加、訂正、削除などなんでもありのページになってゆくことが想定されるので、ご承知おきくだされ。

    【 ASP ってなに 】
    ここで知ったかぶりで能書きをたれても始まらないのでお世話になっている How To ASP さんのサイトの ASPとは何か? を見ていただくほうがためになるとおもう。とはいってもこれまでに理解した範囲でいえば、これは「 Windows マシンのサーバでない」と動かないということと、これをつかったホームページを作れば、見に来た人が要求していることだけを表示させることができるようになる便利な機能をもっている。
    これとよく似た機能が出せるものに PHP 言語がある。この PHP 言語を駆使してホームページを作っても同様のことができ、これは Windows マシンでも Linux マシンのサーバでも動く。 Windows マシンならどちらも目的に応じて選べるが、Linux マシンなら PHP の選択しかないようだ。
    ASP と PHP はそれぞれメリット、でメリットがあるようで、@IT に少し説明がのっている。

    【 ASP.NET は ASP とは別物 】
    ますますややこしいことになりますが、簡単にゆってしまえばASPでは、スクリプトが書かれたファイルは asp.dll が解釈して動作しますが、ASP.NET の方は.NET Framework がエンジンになって動作するというものでエンジンがまったく異なるというものです。
    エンジンが違うのですから、ASP 動くアプリケーションはASP.NET では互換性がなく動作しません。
    ASP.NET ではプログラムを実行するエンジンとして .NET Framework は必須で、さらにIIS5.0とかIIS6.0 が動いていないと条件が揃いません。
    ちなみにASP.NET のアプリケーションを作るには Visual Basic、C#、C++、VBScript、JScript、COBOL、Perl、Python、Pascal、Fortran、SmallTalk・・・などで作ることができます。
    .NET Framework はアプリケーションの実行もするし、開発するときにも働いてくれます。

    【 無知で始めたことゆえ、エラーに出くわすのはあたりまえ 】
    いきなり下記のエラーで面食らってしまった。
      Microsoft OLE DB Provider for ODBC Drivers error '80004005'
      [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xa20 Thread 0xa80 DBC 0x15c4fdc Jet'.
      /asp/guestbook.asp, line 4


    このエラーについて調べたが、mdb ファイルを Access が開いていると上のエラーが出ることが分かった。なにも調べもせずにやるからこんな結末になる。とはいえ、リアルタイムで変更が表示できると勝手に思っていたがそれは無理ということなのだろうか・・・?

    How To ASP さんのサイトの 「ゲストブックを作ってみよう」 を参考にさせていただいて、コンピュータ環境も異なるがなんとかなるだろうという軽いのりで ASP を調べ始めた。面白い活用法が見つかるかもしれない。

    データの書き込みでエラーになる? これはちょとわからない・・・
      Microsoft OLE DB Provider for ODBC Drivers error '80004005'
      [Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.
      /asp/guestbook.asp, line 18


    コンピュータ環境:
    ・Windows 2003 IIS6.0
    ・Firefox 1.5.0.2

    で、先が見えないので、もっと確実に動くものがないかと探したら マイクロソフトのサイト にあった。といっても、機械翻訳なので日本語がまともではなく意味不明なところは原文で確かめた。
    大筋では問題ないがわかっているだけでいつくかそのままで動かなかった。

    1.ファイル DSN がどうしても作られなかった。
    2. Customers.asp ファイルを一部修正しないと動作しなかった。

    よって、ファイル DSN を使ってデータベースにアクセスするのはまだ成功してないが、DSN-less の方はアクセス出来た。 下図はNorthwind.mdb の顧客リストをWeb 上で表示したところである。

    http://1XX.XXX.XXX.X40/test/customers_DSNless.asp

    とりあえずはこれでASP が動くことがわかった。これでとっかかりができたので問題点をひとつずつつぶしていけそうである。

    Access97 が吐きだした customers_DSNless.asp のファイルの全て (青文字部分だけを手作業でなおした)
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">
    <TITLE>得意先</TITLE>
    </HEAD>
    <BODY>
    <%
    Param = Request.QueryString("Param")
    Data = Request.QueryString("Data")
    %>
    <%
    If IsObject(Session("_conn")) Then
    Set conn = Session("_conn")
    Else
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\test\northwind.mdb;uid=Admin"
    ※※この行で、マイクロソフトの例では2行に分かれているが、しかしこのように1行につなげないとエラーになって動かない!!※※
    Set Session("_conn") = conn
    End If
    %>
    <%
    sql = "SELECT * FROM [得意先]"
    If cstr(Param) <> "" And cstr(Data) <> "" Then
    sql = sql & " WHERE [" & cstr(Param) & "] = " & cstr(Data)
    End If
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    %>
    <TABLE BORDER=1 BGCOLOR=#ffffff CELLSPACING=0><FONT FACE="MS Pゴシック" COLOR=#000000><CAPTION><B>得意先</B></CAPTION>

    <THEAD>
    <TR>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>得意先コード</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>フリガナ</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>得意先名</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>担当者名</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>部署</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>郵便番号</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>トドウフケン</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>都道府県</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>住所1</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>住所2</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>電話番号</FONT></TH>
    <TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000>ファクシミリ</FONT></TH>

    </TR>
    </THEAD>
    <TBODY>
    <%
    On Error Resume Next
    rs.MoveFirst
    do while Not rs.eof
    %>
    <TR VALIGN=TOP>
    <TD BORDERCOLOR=#c0c0c0 ALIGN=RIGHT><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("得意先コード").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("フリガナ").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("得意先名").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("担当者名").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("部署").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("郵便番号").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("トドウフケン").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("都道府県").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("住所1").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("住所2").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("電話番号").Value)%><BR></FONT></TD>
    <TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=1 FACE="MS Pゴシック" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("ファクシミリ").Value)%><BR></FONT></TD>

    </TR>
    <%
    rs.MoveNext
    loop%>
    </TBODY>
    <TFOOT></TFOOT>
    </TABLE>
    </BODY>
    </HTML>


    このファイルと、Northwind.mdb を c:\inetpub\wwwroot\test\ ディレクトリに置けば、上図のように Web ブラウザーでみることができる。

    つづく・・・
        ホームへ   
inserted by FC2 system