VBScriptを利用したプログラムは、SubプロシージャやFunctionプロシージャを利用してモジュール分割ができる。
今回は、ASP(Classic ASP)とVBScriptを利用してSQL Serverに接続するプログラムのうち、SQL Serverからユーザーデータリストを取得する部分をSubプロシージャで分割してみたので、そのプログラムを共有する。
なお、SubプロシージャでなくFunctionプロシージャを利用すると、戻り値を返却することができる。
前提条件
下記記事のASP(Classic ASP)とVBScriptを利用してSQL Serverに接続するプログラムの作成が完了していること。
ASP(Classic ASP)とVBScriptを利用してSQL Serverに接続するプログラムを作成してみたASP(Classic ASP)内でVBScriptを利用するプログラムにおいて、データベースに接続するプログラムを作成することができる...
サンプルプログラムの作成
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。
ユーザーデータリストに設定する各値を定義したプログラムの内容は以下の通りで、privateなインスタンス変数とそのGetter/Setterに該当するメソッドをそれぞれ定義している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <% Class UserData private id private name private birthDay private sex private memo Public Sub setId(paramId) id = paramId End Sub Public Function getId() getId = id End Function Public Sub setName(paramName) name = paramName End Sub Public Function getName() getName = name End Function Public Sub setBirthDay(paramBirthDay) birthDay = paramBirthDay End Sub Public Function getBirthDay() getBirthDay = birthDay End Function Public Sub setSex(paramSex) sex = paramSex End Sub Public Function getSex() getSex = sex End Function Public Sub setMemo(paramMemo) memo = paramMemo End Sub Public Function getMemo() getMemo = memo End Function Public Sub toString() Response.Write "UserData(id=" & id & ", name=" & name & ", birthDay=" _ & birthDay & ", sex=" & sex & ", memo=" & memo & ")" End Sub End Class %> |
また、Subプロシージャで定義したプログラムの内容は以下の通りで、userData.incを読み込むと共に、SQL Serverからユーザーデータリストを取得している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <!-- #include file="userData.inc" --> <% Sub GetUserDataList(ByRef userDataList) 'ユーザーデータリストを初期化する Set userDataList = CreateObject("System.Collections.ArrayList") 'SQL Serverに接続する Dim objCon Dim objRS Set objCon = CreateObject("ADODB.Connection") objCon.Open "Driver={SQL Server};server=localhost;" _ & "database=master;uid=USER01;pwd=USER01;" 'USER_DATAテーブルから全データを取得する Set objRS = objCon.Execute("SELECT * FROM dbo.USER_DATA") Do Until objRS.EOF 'ユーザーデータを生成し、取得したデータを設定する Dim userData Set userData = New UserData userData.setId(objRS("id").Value) userData.setName(objRS("name").Value) userData.setBirthDay(objRS("birth_year").Value & "年" _ & objRS("birth_month").Value & "月" _ & objRS("birth_day").Value & "日") Dim sexVal If objRS("sex").Value = "1" Then sexVal = "男" ElseIf objRS("sex").Value = "2" Then sexVal = "女" Else sexVal = "" End If userData.setSex(sexVal) userData.setMemo(objRS("memo").Value) 'ユーザーデータを追加する userDataList.add userData Set userData = Nothing '次のレコードに進む objRS.MoveNext LOOP 'SQL Serverから切断する objCon.Close Set objRS = Nothing Set objCon = Nothing End Sub %> |
さらに、ASPのプログラムの内容は以下の通りで、sub.incを読み込むと共に、Subプロシージャで取得したユーザーデータリストを画面に表示している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <%@ LANGUAGE="VBScript" %> <!-- #include file="sub/sub.inc" --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="Shift_JIS"/> <title>SQLServer接続</title> </head> <body> SQL Serverのユーザーデータテーブル(USER_DATA)から、全データを取得します。<br/><br/> <% 'USER_DATAテーブルから全データを取得する Dim userDataList Call GetUserDataList(userDataList) %> <!-- ユーザーデータを表示する --> <!-- データが無い場合は、メッセージを画面表示し終了する --> <% If userDataList.Count = 0 Then %> ユーザーデータテーブルにデータはありません。 <% Else %> <table border="1" cellpadding="5"> <tr> <th>ID</th> <th>名前</th> <th>生年月日</th> <th>性別</th> <th>メモ</th> </tr> <% Dim user For Each user In userDataList %> <tr> <td><%= user.getId() %></td> <td><%= user.getName() %></td> <td><%= user.getBirthDay() %></td> <td><%= user.getSex() %></td> <td><%= user.getMemo() %></td> </tr> <% Next %> </table> <% End If %> <% 'ユーザーデータリストをクリアする userDataList.Clear Set userDataList = Nothing Set user = Nothing %> </body> </html> |
サンプルプログラムの実行結果
以下の前提条件に記載した記事の、サンプルプログラムの実行結果と同じ結果になること。
ASP(Classic ASP)とVBScriptを利用してSQL Serverに接続するプログラムを作成してみたASP(Classic ASP)内でVBScriptを利用するプログラムにおいて、データベースに接続するプログラムを作成することができる...
要点まとめ
- VBScriptを利用したプログラムは、SubプロシージャやFunctionプロシージャに分割することができる。
- Subプロシージャの定義は、拡張子に.incをもつ別ファイルに定義し、呼び元のASPで「」を指定することで呼び出すことができる。
- VBScriptでは、Classを利用してprivateなインスタンス変数とそのGetter/Setterに該当するメソッドをそれぞれ定義できる。