Access + Webのホームへ戻る

ADOとは

 

ADOとは、ActiveX Data Objectsの略で各種データベースをアクセスするコンポーネントです。ADOは、マイクロソフトのテクノロジーでIISをインストールすると自動的にインストールされます。なお、ADOの最新版はマイクロソフトのWebサイトからダウンロードすることができます。ADOは、MDAC(Microsoft Data Access Components)に含まれていますのでMDACをダウンロードします。

 

ADOには、SQL Server, Oracle, Access Jetなどの各種データベースのドライバーが用意されています。これらのデータベースにアクセスするには、ODBCDSN(Data Source Name)を登録する方法と、DSNを使用しないで直接データベースを指定する方法(DSN-less方式と呼びます)があります。ここでは、DSN-less方式でデータベースを直接接続します。

 

ADOには、図に示すようにConnection, Command, Recordset, Record, Steamオブジェクトなどがサポートされています。RecordStreamは、ADO 2.5でサポートされたオブジェクトです。ADOの各種オブジェクトには、プロパティとメソッドがあります。表にConnection, Command, Recordsetオブジェクトでサポートされているプロパティとメソッドの一覧を列挙しましたので参考にしてください。

 

ADOには、ADOX(ADO Extensions for DDL and Security)と呼ばれるADOの拡張コンポーネントがります。ADOXには、データベースの構造を保守するための各種プロパティとメソッドがサポートされています。

 

重要

Access 2002で作成されたデータベース(MDB)ADO経由でアクセスしたときの不具合:

 

Access 2002で作成されたデータベース(MDB)を、ADO 2.7を使用してアクセスすると「選択されたCollating SequenceOSではサポートされていません。」のエラーになります。この不具合は、Access 2000のデータ形式(デフォルトのデータ形式)とAccess 2002のデータ形式双方で発生します。

 

この不具合を回避するには、

     Access 2000でデータベース(MDB)を作成する。

     Access 2002で作成したデータベース(Access 2000/2002のデータ形式)Access 97のデータ形式に変換する。

 

の方法があります。

 

この不具合は、Access 2002 SP1でも解決されていないようです。

 

 

 

図 ADOオブジェクトモデル

 

  ADOXオブジェクトモデル

 

表 Connectionオブジェクトのプロパティ/メソッド

プロパティ

Attributes

Connectionオブジェクトの属性を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Attributes)

CommandTimeout

Command実行時のタイムアウト時間(単位秒)を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.CommandTimeout=10 ‘ seconds

response.Write(cnn.CommandTimeout) è 10

ConnectionString

Connection情報を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"

response.Write(cnn.ConnectionString)

èProvider=Microsoft.Jet.OLEDB.4.0

ConnectionTimeout

ConnectionOpenメソッドのタイムアウト時間(単位秒)を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"

cnn.ConnectionTimeout=30 ‘ seconds

response.Write(cnn.ConnectionTimeout) è 30

CursorLocation

Cursorのロケーション(adUseServer,adUseClient)を設定/参照します。

例:

const adUseServer=2

const adUseClient=3

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.Recordset")

rs.CursorLocation=adUseClient

response.Write(rs.CursorLocation ) è 3

rs.Open strSQL,cnn

DefaultDatabase

デフォルトデータベース名を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.DefaultDatabase="mydb"

IsolationLevel

トランザクションのIsolationレベルを設定/参照します。

例:

const adXactIsolated = 1048576

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.IsolationLevel=adXactIsolated

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.IsolationLevel) è 1048576

Mode

プロバイダーのアクセク権限を設定/参照します。

例:

const adModeRead = 1

const adModeWrite = 2

const adModeReadWrite = 3

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Mode=adModeReadWrite

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Mode) è 3

Provider

プロバイダー名を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Provider) è Microsoft.Jet.OLEDB.4.0

 

State

Connectionの状態(open/closed)を返します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

response.Write(cnn.State) è 0(closed)

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.State) è 1(open)

 

Version

ADOのバージョン番号を返します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Version) è 2.7

メソッド

BeginTrans

新規トランザクションを開始します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.BeginTrans

Cancel

実行を中止します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.Cancel

Close

データベースを切断します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.Close

CommitTrans

トランザクションを保存して終了させます。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.BeginTrans

・・・

cnn.CommitTrans

Execute

各種処理を実行します。

例:

strSQL = "SELECT * FROM 得意先;"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=cnn.Execute(strSQL)

 

Open

データベースを接続します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

 

OpenSchema

スキーマ情報を返します。

 

RollbackTrans

トランザクションを復元して終了させます。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.BeginTrans

・・・

cnn.RollbackTrans

 

 

表 Commandオブジェクトのプロパティ/メソッド

プロパティ

ActiveConnection

Connection情報を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.Mappath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.ActiveConnection=cnn

response.Write(cmd.ActiveConnection)

èProvider=Microsoft.Jet.OLEDB.4.0;

èPassword="";User ID=Admin;

èData Source=D:\webdb\ado.mdb; ・・・

 

CommandText

プロバイダーのCommand情報(SQL,Table,URL.・・・)を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.Mappath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.CommandText="得意先"

response.Write(cmd.CommandText)

è 得意先

CommandTimeout

Command実行時のタイムアウト時間(単位秒)を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.CommandTimeout=10

response.Write(cmd.CommandTimeout) è 10

CommandType

Commandオブジェクトのタイプ(adCmdText, adCmdTable, adCmdStoredProc,・・・)を設定/参照します。

 

例:

const adCmdText = 1

const adCmdTable = 2

const adCmdStoredProc = 4

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.CommandText="得意先"

cmd.CommandType=adCmdTable

response.Write(cmd.CommandType) è 2

Name

Commandオブジェクト名を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.Name="CommandName"

response.Write(cmd.Name) è CommandName

Prepared

Commandを最初に実行するときコンパイル版を保存するかどうかの指示を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.ActiveConnection=cnn

cmd.CommandText="得意先"

cmd.Prepared=true

response.Write(cmd.Prepared) è True

State

Commandオブジェクトの状態(Closed, Open, Connecting, Executing, Fetching)を返します。

 

例:

const adStateClosed = 0

const adStateOpen = 1

const adStateConnecting = 2

const adStateExecuting = 4

const adStateFetching = 8

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

response.Write(cmd.State) è 0

メソッド

Cancel

処理を中止します。

 

書式:

cmd.Cancel

CreateParameter

パラメータオブジェクトを新規に生成します。

 

書式:

set prm=

cmd.CreateParameter(name, type, direction, size, value)

Execute

処理を実行します。

 

書式:

set rs = cmd.Execute(recordaffected, parameters, options)

or

cmd.Execute recordaffected, parameters, options

 

 

 

表 Recordsetオブジェクトのプロパティ/メソッド

プロパティ

AbsolutePage

Recordsetオブジェクトのページ番号を設定/参照します。

 

書式:

rs.AbsolutePage

AbsolutePosition

カレントレコードの位置を設定/参照します。

 

書式:

rs.AbsolutePosition

ActiveCommand

RecordsetCommandオブジェクトを返します。

 

書式:

rs.ActiveCommand

ActiveConnection

RecordsetConnectionオブジェクトを設定/参照します。

 

書式:

rs.ActiveConnection

BOF

Recordsetの先端を検出したときにTrueを返します。

 

書式:

rs.BOF

Bookmark

Bookmark(カレントレコードの位置)を設定/参照します。

 

書式:

rs.Bookmark

 

例:

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.Open strSQL, cnn , adOpenStatic, adLockReadOnly, adCmdText

rs.MoveFirst

varBookmark=rs.Bookmark

rs.MoveLast

rs.Bookmark=varBookmark

 

CacheSize

キャッシュサイズを設定/参照します。

 

書式:

rs.CacheSize

 

例:

const adUseClient = 3

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.PageSize = 10

rs.CacheSize = 10 

rs.CursorLocation = adUseClient

rs.Open strSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText

response.Write(rs.Recordcount) è 51

response.Write("<br>")

response.Write(rs.PageCount) è 6 (=51/10+1)

 

CursorLocation

CursorLocation(adUseServer, adUseClient)を設定/参照します。

 

書式:

rs.CursorLocation

 

例:

const adUseClient = 3

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.CursorLocation = adUseClient

rs.Open strSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText

 

CursorType

Cursorのタイプ(adOpenForwardOnly, adOpenKeyset, adOpenDynamic, adOpenStatic)を設定/参照します。

 

書式:

rs.CursorType

 

例:

const adUseClient = 3

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.CursorLocation = adUseClient

rs.CursorType = adOpenStatic

rs.LockType = adLockReadOnly

rs.Open strSQL, cnn

DataMember

DataMember名を設定/参照します。

 

書式:

rs.DataMember

DataSource

DataSourceのオブジェクトを設定/参照します。

 

書式:

rs.DataSource

EditMode

カレントレコードの編集状態を返します。

 

書式:

rs.EditMode

EOF

Recordsetの終端を検出したときにTrueを返します。

 

書式:

rs.EOF

 

例:

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=cnn.Execute(strSQL)

do until rs.eof

  response.Write rs(0)

  response.Write "<br>"

  rs.MoveNext

loop

Filter

Recordsetのフィルタ条件を設定/参照します。

 

書式:

rs.Filter

Index

Recordsetのカレントのインデックス名を設定/参照します。

 

書式:

rs.Index

LockType

排他制御の種類を設定/参照します。

 

書式:

rs.LockType

 

例:

const adUseClient = 3

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.CursorLocation = adUseClient

rs.CursorType = adOpenStatic

rs.LockType = adLockReadOnly

rs.Open strSQL, cnn

MarshalOptions

サーバーにどのレコードを戻すかを設定/参照します。

 

書式:

rs.MarshalOptions

MaxRecords

Recordsetの最大レコード数を設定/参照します。

 

書式:

rs.MaxRecords

 

例:

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.MaxRecords=20

rs.Open strSQL,cnn

PageCount

Recordsetの総レコード数をページ数に換算して返します。

 

書式:

rs.PageCount

 

例:

const adUseClient = 3

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.PageSize = 10

rs.CacheSize = 10 

rs.CursorLocation = adUseClient

rs.Open strSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText

response.Write(rs.Recordcount)  è 51

response.Write("<br>")

response.Write(rs.PageCount)  è 6 (=51/10+1)

 

PageSize

ページ当たりのレコード数を設定/参照します。

 

書式:

rs.PageSize

 

例:

const adUseClient = 3

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.PageSize = 10

rs.CacheSize = 10

rs.CursorLocation = adUseClient

rs.Open strSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText

response.Write(rs.Recordcount)  è 51

response.Write("<br>")

response.Write(rs.PageCount) è 6 (=51/10+1)

 

RecordCount

Recordsetのレコード件数を返します。

 

書式:

rs.RecordCount

 

例:

const adUseClient = 3

const adOpenStatic = 3

const adLockReadOnly = 1

const adCmdText = &H0001

 

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.CursorLocation = adUseClient

rs.Open strSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText

response.Write(rs.Recordcount)  è 51

 

Sort

Recordsetを並べ替えするフィールドを設定/参照します。

 

書式:

rs.Sort

 

例:

rs.Sort = “フリガナ

rs.Sort = “受注日 DESC, 受注番号

Source

Recordsetのソースを設定/参照します。

 

書式:

rs.Source

State

Recordsetの状態を返します。

 

書式:

rs.State

Status

カレントレコードのステータスを返します。

 

書式:

rs.Status

StayInSync

親レコードと子レコードを連動させるかどうかの指示を設定/参照します。

 

書式:

rs.StayInSync

メソッド

AddNew

新規レコードを作成(登録)します。

 

書式;

rs.AddNew [fieldlist][,values]

 

例:

varFields=Array("ProductName","Prize","Quantity")

varValues=Array("Access 2000","3500","5")

rs.AddNew varFields,varValues

Cancel

実行を中止します。

 

書式:

rs.Cancel

CancelBatch

バッチ更新処理を中止します。

 

書式:

rs.CancelBatch [affectrecord]

 

CancelUpdate

変更されたレコードを変更前の状態に復元します。

 

書式:

rs.CancelUpdate

 

Clone

レコードのクローン(重複レコード)を作成します。

 

書式:

set rsClone=rs.Clone(locktype)

 

Close

Recordsetを閉じます。

 

書式:

rs.Close

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/asp.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.Open "得意先", cnn

rs.Close

cnn.Close

CompareBookmarks

Bookmarkを比較します。

 

書式:

result=rs.CompareBookmarks(mark1,mark2)

 

Delete

レコードを削除します。

 

書式:

rs.Delete [affectrecords]

 

Find

レコードを検索します。

 

書式:

rs.Find(criteria,skiprows,direction,start)

GetRows

Recordsetのレコードを二次元の配列変数に格納します。

 

書式:

varArray=rs.GetRows(rows,start,fields)

GetString

Rrecordsetの全レコードを文字列として返します。

 

書式:

set strRs=rs.GetString(format,n,coldel,rowdel,nullexpr)

Move

レコードの位置を移動します。

 

書式:

rs.Move numrec,start

MoveFirst

先頭レコードに移動します。

 

書式:

rs.MoveFirst

 

MoveLast

最終レコードに移動します。

 

書式:

rs.MoveLast

 

MoveNext

次のレコードに移動します。

 

書式:

rs.MoveNext

 

MovePrevious

前のレコードに移動します。

 

書式:

rs.MovePrevious

 

NextRecordset

カレントのRecordsetオブジェクトを消去して次のRecordsetオブジェクトを返します。

 

書式:

set rsNext=rs.NextRecordset([affectrecord])

 

Open

Recordsetを開きます。

 

書式:

rs.Open source,cnn,cursortype,locktype,option

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/asp.mdb")

set rs=server.CreateObject("ADODB.recordset")

rs.Open "得意先", cnn

rs.Close

cnn.Close

Requery

Recordsetを再クエリして最新のデータを取り込みます。

 

書式:

rs.Requery options

Resync

Recordsetのデータをリフレッシュします。

 

書式:

rs.Resync affectrecords,resyncvalues

Save

Recordsetをファイルまたはストリームオブジェクトに保存します。

 

書式:

rs.Save destination,persistformat

 

例:

set xmlDoc=server.CreateObject("Microsoft.XMLDOM")

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs = server.CreateObject("ADODB.recordset")

rs.Open "得意先", cnn

rs.Save xmlDoc, 1

Seek

レコードのキーを指定して検索します。

 

書式:

rs.Seek keyvalues,seekoption

Supports

指定した機能をサポートしているかどうかをTrue/Falseで返します。

 

書式:

rs.Supports(cursoroptions)

Update

レコードを更新します。

 

書式:

rs.Update [fields][,values]

UpdateBatch

更新されているすべのレコードをデータベースに保存します。

 

書式:

bool=rs.UpdateBatch [affectrecords]

 

 

   レコードセットの内容をブラウザに表示するには

 

ADOConnectionオブジェクトを使用してAccess のデータベースado.mdbから得意先テーブルを読み込んでブラウザに表示する方法を説明します。Access のデータベースを使用可能にするには、ADOConnectionオブジェクトのOpenメソッドでデータベースを接続します。AccessJetエンジンを使用するには、ConnectionProviderプロパティに” Microsoft.Jet.OLEDB.4.0”を設定する必要がります。参考までに、SQL Serverを使用するには”SQLOLEDB”Oracleを使用するときは”MSDAORA”を設定します。Openメソッドの引数には、データベースの物理パスを指定します。

 

set cnn=Server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open "C:\webdb\ado.mdb"

 

データベースのテーブルを開くには、Connection, Command, Recordsetオブジェクトを利用する方法がありますがここでは、ConnectionオブジェクトのExecuteメソッドを使用します。Executeメソッドの引数1にはSQLを指定します。Executeメソッドには、引数2と引数3もありますが省略します。

 

set rs=cnn.Execute(“Select * From 得意先”)

 

ExecuteメソッドでRecordsetオブジェクトを取得したら、do until…loopEOFを検出するまでMoveNextメソッドでレコードを読み込みます。

 

do until rs.EOF

   ・・・

   rs.MoveNext

loop

 

 

図 レコードセットの内容を表示するサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「レコードセットの内容を表示する」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには実行結果が表示されます。

 

図の行12-15では、ConnectionオブジェクトのOpenメソッドで指定するコネクション情報を変数strConnectionに保存しています。Provider=Microsoft.Jet.OLEDB.4.0;"を指定していますが、これはMicrosoftJetエンジンのOLEDBを使用することを意味します。Data Source=には、Access 2000のデータベースado.mdbの物理パスを指定します。このサンプルでは、ado.mdbの物理パスを取得するのに、ASPServer.MapPathメソッドを使用しています。

 

Server.MapPath(webdb/ado.mdb)

è D:\Inetpub\wwwroot\accweb\samples\ado\webdb\ado.mdb

 

16では、ado.mdbの得意先テーブルを読み込むためのSQL(Structured Query Language)を作成して変数strSQLに保存しています。SELECTの後の*は、得意先テーブルのすべてのフィールドを取り込むことを意味します。特定のフィールドのみ取り込むときは、フィールド名を指定します。

 

SELECT * FROM 得意先;

SELECT 得意先コード, 得意先名 FROM 得意先;

 

17-18では、Connectionオブジェクトのインスタンスを生成してOpenメソッドでAccessのデータベースado.mdbを接続(使用可能状態にする)しています。

 

set cnn = server.CreateObject("adodb.connection")

cnn.open strConnection

 

19Executeメソッドは、引数で指定されたSQLを実行してRecordsetオブジェクトを返します。(データベースado.mdbの得意先テーブルのを読み込んで使用可能状態にします。)

 

set rs = cnn.execute(strSQL)

 

20-27do until…loopでは、得意先テーブルのレコードをEOFになるまで読み込んでブラウザに表示しています。行21-24for each…nextループでは、レコードのすべてのフィールドを処理しています。行22-23では、フィールド名とフィールド値をResponse.Writeでブラウザに表示しています。行26では、RecordsetオブジェクトのMoveNextメソッドで得意先テーブルの次のレコードに移動しています。最終レコードを読み込んだ状態でMoveNextメソッドを発行するとEOFプロパティがTrueになります。

 

28では、RecordsetオブジェクトのCloseメソッドでレコードセットを閉じています。行29では、ConnectionオブジェクトのCloseメソッドでデータベースを切断しています。

30-31では、RecordsetConnectionオブジェクトを解放しています。

 

   レコードセットの内容を表形式で表示するには

 

レコードセットの内容を表形式で表示させるには、HTML<table>・・・</table>タグを使用します。

 

<table>

  <tr>

    <td>列1</td>

   <td>列2</td>

   <td>列3</td>

  </tr>

</table>

 

 

 

図 レコードセットの内容を表形式で表示するサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「レコードセットの内容を表に表示する」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、実行結果が表示されます。

 

図の行15-20では、Access 2000のデータベースado.mdbに接続するための処理を行っています。行21では、ConnectionオブジェクトのExecuteメソッドでado.mdb得意先テーブルのRecordsetオブジェクトを生成しています。SQLSELECTに得意先テーブルのフィールド名(得意先名、担当者名、電話番号)が指定されていますので、ここで指定したフィールドのみ読み込まれます。

 

strSQL = "Select 得意先名,担当者名,電話番号 from 得意先"

set rs = cnn.execute(strSQL)

 

22,36では、HTML<table>・・・</table>タグを生成しています。行23-27では、表の見出しを生成しています。行24-26for each…nextでは、RecordsetオブジェクトのFieldsコレクションからレコードセットのすべてのフィールド名(得意先名、担当者名、電話番号)を取得して表の見出しとして表示させています。表の見出しは、HTML<th>・・・</th>タグを使用して生成しています。

 

response.write "<tr>"

for each fld in rs.fields

  response.write "<th>" & fld.name & "</th>"

next

response.write "</tr>"

 

 

28-35do until…loopでは、表のデータ部を生成しています。行29,33では、HTML<tr>・・・</tr>タグを生成しています。行30-32for each…nextでは、HTML<td>・・・</td>タグを生成しています。

 

do until rs.eof

  response.write "<tr>"

  for each fld in rs.fields

    response.write "<td>" & fld.value & "</td>"

  next

  response.write "</tr>"

  rs.MoveNext

loop

 

 

   表に背景色をつけてレコードを表示させるには

 

HTML<table>・・・</table>タグで表を作成するとき、行ごとに異なる背景色をつける方法を説明します。表に背景色をつけるには、スタイルシートのbackgroundプロパティを使用します。前景色は、colorプロパティを使用します。たとえば、表のセルの背景色をオレンジ、前景色を黒に設定するには、以下のようなCSSを定義します。

 

<style>

td {background: orange; color: black}

</style>

 

 

図 表に背景色をつけてレコードを表示するサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「表に背景色をつけて表示する」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、実行結果が表示されます。

 

表の見出しのセルの背景色をブラウン、前景色を白にするには以下のようなCSSを定義します。

 

th {background: brown; color: white; font-size: 80%; }

 

表のデータ部のセルの背景色は、行ごとに交互に切り替えるためにオレンジとピンクの2種類用意します。

 

td.orange {background: orange; color: black; font-size: 80%;}

td.pink {background: pink; color: black;font-size: 80%;}

 

 

図の行33-40では、Access 2000のデータベースado.mdbを接続するための処理を行っています。行41では、ConnectionオブジェクトのExecuteメソッドでado.mdb得意先テーブルのRecordsetオブジェクトを生成しています。行42, 63では、<table>・・・</table>タグを生成しています。行43-47では、表の見出しを生成しています。HTML<th>タグには、CSSが定義されていますので見出しはブラウンの背景色と白の前景色で表示されます。

 

response.write "<tr>"

for each fld in rs.fields

  response.write "<th>" & fld.name & "</th>"

next

response.write "</tr>"

 

48-62do until…loopでは、表のデータ部を生成しています。行49-59で表の行を生成するとき、行ごとに背景色を切り替えるために変数fOrangeを使用しています。fOrangeTrueのときは、<td>タグを生成するときclass=”orange”を指定して、td.orangeのスタイルシートを適用させています。fOrangeFalseのときは、<td>タグを生成するときclass=”pink”を指定して、td.pinkのスタイルシートを適用させています。

 

for each fld in rs.fields

  if fOrange then

    response.write "<td class='orange'>" & fld.value & "</td>"

  else

    response.write "<td class='pink'>"   & fld.value & "</td>"

  end if

next

 

60では、フラグfOrangeの値を逆に設定して背景色を行ごとに切り替えています。

 

fOrange = not fOrange

True è False

False è True

 

Tip

Response.WriteHTMLタグを生成するときHTMLソースを見易くするには:

 

Response.WriteメソッドでブラウザにHTMLタグを送信するとき、vbNewLineまたはvbCrLfを付加して改行すると、HTMLソースを解析するときに見易くなります。

 

Response.Write “<br>” & vbNewLine

Response.Write “<br>” & vbCrLf

 

個々のResponse.WritevbNewLineを付加するのが煩わしいときは、Echoのようなサブプロシージャを作成すると便利です。

 

Echo “<br>”  自動的にvbNewLineが付加されます

 

sub Echo(strValue)

  response.write(strValue & vbNewLine)

end sub

 

 

 

Access + Webのホームへ戻る