サーバサイドスクリプト Active Server Page を使ったプログラム

Acitive Server Page(以下ASP)は、Microsoft社製 IIS の上で動作する サーバサイドスクリプトです。
<% .... %> の間に VB Script で プログラムを記述します。HTML ファイルの内部に直接プログラムを挿入できるため 一般のCGIプログラムに比べて管理が容易です。
一方、HTML Scriptと サーバサイド VB Scriptが混在し さらにクライアントサイド Java Scriptが混在したソースファイルとなることが多く、プログラムとしては 見通しが悪くなるという欠点もあります。

・ ADODB を使用したデータベースアクセス

ADODB はサーバサイド ActiveXコンポーネントで、サーバサイドでのデータベース 処理を行うことが出来ます。VB Scriptでは CreateObject()関数で オブジェクトを 生成し使用します。

Microsoft SQL Server を使用し、データベース sample に接続するコードを 記述してみます。

  <table border=1 cellspacing=0 rules='both' bgcolor="white">
   <tr class='e'>   <!-- header line -->
    <th nowrap>日付</th>
    <th nowrap>病歴</th>
    <th nowrap>氏名</th>
    <th nowrap>部署</th>
    <th nowrap>診療科</th>
    <th nowrap>医師名</th>
    <th nowrap>次回処方</th>
    <th nowrap>処方内容</th>
   </tr>
<%
   '-- 以下、サーバサイドスクリプト --
   dim cn, rs, sConn, iCount, i

   sConn = "Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=patient;" _
            & "Data Source=SQLSVR;"

   set cn = Server.CreateObject("ADODB.Connection")
   cn.Open sConn

   set rs = Server.CreateObject("ADODB.Recordset")
   set rs.ActiveConnection = cn

   rs.Source = "SELECT tblDrugOrder.*, tblBasicData.Name, Position " _
        & " FROM tblDrugOrder, tblBasicData " _
        & " WHERE tblDrugOrder.PtCode = tblBasicData.Code " _
        & " AND OrderDate>'2001/08/01' " _
        & " ORDER BY tblBasicData.Kana"
   rs.CursorType = adOpenStatic
   rs.Open

   iCount = 1
   do while ((not rs.eof) And (iCount < 120))
      response.write "<tr class = o>"

      response.write "<td nowrap>" _
        & FormatDateTime(rs.Fields("OrderDate"), vbShortDate) & "</td>"
      response.write "<td align=right nowrap>" & rs.Fields("PtCode") & "</td>"
      response.write "<td nowrap><a href='next.asp?PtCode=" _
        & rs.Fields("PtCode") & "'>" & rs.Fields("Name") & "</a></td>"
      response.write "<td nowrap>" & rs.Fields("Position") & "</td>"
      response.write "<td nowrap>" & rs.Fields("Department") & "</td>"
      response.write "<td nowrap>" & rs.Fields("Doctor") & "</td>"
      if rs.Fields("OrderType") = 0 then
        response.write "<td nowrap>[臨時]</td>"
      else
        response.write "<td nowrap>" & rs.Fields("NextDate") & "</td>"
      end if

    '-- 処方内部の改行(vbCrLf)を <br>タグに変換 --
      response.write "<td nowrap>"
      Dim sDrug, iPre, iPos, sLine, iVars
      iPre = 1
      iVars = 0     '-- 薬の種類数
      sDrug = rs.Fields("DrugOrder")
      iPos = InStr(iPre, sDrug, vbCrLf)
      do while iPos >= 1
        response.write ToLine(Mid(sDrug, iPre, iPos - iPre), iVars) & "<br>"
        iPre = iPos + 2     ' -- Cr, Lf
        iPos = InStr(iPre, sDrug, vbCrLf)
      loop
      response.write ToLine(Mid(sDrug, iPre), iVars) ' 最終行処理
      response.write "</td>"
      response.write "</tr>" & vbCrLf

      iCount = iCount + 1
      rs.MoveNext
   loop
   rs.Close
   cn.Close
%>


TOMOsan Top Page に戻る
パソコン・プログラミングに戻る


Copyright(c) 2001 Tomohiko Saito. All rights reserved.
last update :