Streamオブジェクト

データのバイナリまたはテキスト ストリームを表します。

* Charset
* EOS
* LineSeparator
* Mode
* Position
* Size
* State
* Type
* Cancel
* Close
* CopyTo
* Flush
* LoadFromFile
* Open
* Read
* ReadText
* SaveToFile
* SetEOS
* SkipLine
* Write
* WriteText


UpdateBatch

(PWS4 IIS4 IIS5)
UpdateBatch — 保留中のバッチ更新をすべてディスクに書き込みます。

構文

recordset.UpdateBatch AffectRecords

パラメータ

recordset
Recordset オブジェクを指定します。
AffectRecords
省略可能です。UpdateBatch メソッドで操作するレコード数を示す AffectEnum 値を指定します。

戻り値

値を返しません。

説明

バッチ更新モードで Recordset オブジェクトを編集しているときに UpdateBatch を使用すると、Recordset オブジェクトに加えられたすべての変更が、基になるデータベースに転送されます。

Recordset オブジェクトがバッチ更新をサポートしている場合、UpdateBatch メソッドを呼び出すまで、1 つまたは複数のレコードに対する複数の変更をローカルにキャッシュできます。カレント レコードの編集中、または新規レコードの追加中に UpdateBatch メソッドを呼び出すと、変更を一括してプロバイダに転送する前に、Update が自動的に呼び出され、カレントレコードの保留中の変更がすべて保存されます。バッチ更新は、キーセットまたは静的カーソルでのみ使用します。

注意 フィルタ操作で該当レコードが存在しない場合など、現在の Recordset で表示するレコードが存在しない場合に、このパラメータの値に adAffectGroup を指定すると、エラーが発生します。

基になるデータとの競合 (たとえば、ほかのユーザーによってレコードが削除されている場合など) が原因で、複数またはすべてのレコードに対する変更の送信に失敗した場合、プロバイダは Errors コレクションに警告を返し、実行時エラーが発生します。競合しているレコードを特定するには、Filter プロパティ (adFilterAffectedRecords) と Status プロパティを使用します。

保留中のバッチ更新をキャンセルするには、CancelBatch メソッドを使用します。

Unique Table および Update Resync ダイナミック プロパティが設定されていて、Recordset が複数のテーブルに対する JOIN 操作の実行結果である場合、UpdateBatch メソッドの実行後に、Update Resync プロパティの設定値に基づいて Resync メソッドが暗黙的に実行されます。

データ ソースで行われる個々のバッチ更新の順序は、ローカルの Recordset で実行した順序と同じである必要はありません。更新順序はプロバイダによって決まります。挿入または更新時での外部キーによる制約など、相互に関連する更新をコーディングするときは、このことを考慮に入れてください。


Update

(PWS4 IIS4 IIS5)
Update — Recordset オブジェクトのカレント行の Fields コレクションに加えた変更を保存します。

構文

recordset.Update Fields, Values

パラメータ

recordset
Recordset オブジェクを指定します。
Fields
省略可能です。単一の名前を表すバリアント型 (Variant) の値、あるいは変更するフィールド名または位置を表す値の並びをバリアント型 (Variant) の配列として指定します。
Values
省略可能です。単一の値を表すバリアント型 (Variant) の値、または新規レコードのフィールド値を表すバリアント型 (Variant) の配列を指定します。

戻り値

値を返しません。

説明

Update メソッドを使って、AddNew メソッドの呼び出し以後、または既存のレコードのフィールド値の変更後に行われる、Recordset オブジェクトのカレントレコードへの変更内容を保存します。Recordset オブジェクトは更新をサポートしている必要があります。

フィールド値を設定するには、次のいずれかの操作を行います。

* Field オブジェクトの Value プロパティに値を代入し、Update メソッドを呼び出します。
* Update メソッドの呼び出しで、フィールド名と値を引数として渡します。
* Update メソッドの呼び出しで、フィールド名の配列と値の配列を渡します。

フィールド名の配列と値の配列を使用する場合、両方の配列の要素数が同じである必要があります。また、フィールド名の順序とフィールド値の順序も一致している必要があります。フィールド名とフィールド値の数および順序が一致しない場合は、エラーが発生します。

Recordset オブジェクトがバッチ更新をサポートしている場合、UpdateBatch メソッドを呼び出すまで、1 つまたは複数のレコードに対する複数の変更をローカルにキャッシュできます。カレント レコードの編集中または新規レコードの追加中に UpdateBatch メソッドを呼び出すと、変更を一括してプロバイダに転送する前に、Update メソッドが自動的に呼び出され、カレントレコードの保留中の変更がすべて保存されます。

Update メソッドを呼び出す前に、追加または編集を行っているレコードから移動すると、自動的に Update が呼び出され、変更が保存されます。カレントレコードに加えた変更をキャンセルする場合、または新しく追加したレコードを破棄する場合は、CancelUpdate メソッドを呼び出す必要があります。

Update メソッドを呼び出した後も、カレント レコードはそのままカレント レコードになります。

Unique Table ダイナミック プロパティが設定されていて、Recordset が複数のテーブルに対する JOIN 操作の実行結果である場合、Update メソッドは、複数のテーブルにあるすべての主キーの更新をすることができません。また、Update メソッドは、Unique Table プロパティに指定されたテーブルのフィールドのみを更新することができます。


Supports

(PWS4 IIS4 IIS5)
Supports — 指定の Recordset オブジェクトが特定の種類の機能をサポートするかどうかを決定します。

構文

recordset.Supports( CursorOptions )

パラメータ

recordset
Recordset オブジェクを指定します。
CursorOptions
1 つまたは複数の CursorOptionEnum 値で構成される長整数型 (Long) の式を指定します。

戻り値

CursorOptions 引数で指定されたすべての機能がプロバイダでサポートされているかどうかを示す、ブール型 (Boolean) の値を返します。

説明

Supports メソッドは、Recordset オブジェクトがサポートする機能の種類を調べるために使用します。CursorOptions で指定された定数に対応する機能が Recordset オブジェクトでサポートされている場合、Supports メソッドは True を返します。対応する機能がサポートされていない場合は、False を返します。

注意 指定した機能に対して Supports メソッドが True を返しても、プロバイダでは必ずしもその機能を使用できるとは限りません。Supports メソッドは、必要な条件が満たされているという前提に基づいて、指定した機能をプロバイダがサポートできるかどうかを判別した結果を返します。たとえば、カーソルが複数のテーブルの結合に基づいている場合でも、Supports メソッドは、その Recordset オブジェクトが更新をサポートすると判別することがありますが、実際には更新できない列もあります。


Seek

(PWS4 IIS4 IIS5)
Seek — Recordset のインデックスを検索して指定値と一致する行をすばやく検索し、カレント行の位置をその行に変更します。

構文

recordset.Seek KeyValues, SeekOption

パラメータ

recordset
Recordset オブジェクを指定します。
KeyValues
バリアント型 (Variant) の値の配列を指定します。インデックスは、1 つまたは複数の列で構成されているため、この配列には、インデックスの各列と照合するための値を指定します。
SeekOption
インデックスの各列とそれに対応する KeyValues を比較するときの、比較の種類を SeekEnum 値で指定します。

戻り値

値を返しません。

説明

基になるプロバイダが Recordset オブジェクトのインデックスをサポートしている場合は、Seek メソッドを Index プロパティと組み合わせて使用します。基になるプロバイダが Seek をサポートしているかどうかを判別するには、Supports(adSeek) メソッドを使用します。プロバイダがインデックスをサポートしているかどうかを判別するには、Supports(adIndex) メソッドを使用します。Microsoft OLE DB Provider for Microsoft Jet は、Seek および Index をサポートしています。

Seek メソッドで求める行が見つからない場合、エラーは発生せず、行の位置は Recordset の最後になります。このメソッドを実行する前に、必要なインデックスを Index プロパティに設定してください。

このメソッドは、サーバー側のカーソルでのみサポートされます。Recordset オブジェクトの CursorLocation プロパティの値が adUseClient の場合、Seek はサポートされません。

このメソッドは、CommandTypeEnum に adCmdTableDirect を指定して Recordset オブジェクトを開いている場合にのみ使用できます。


Save

(PWS4 IIS4 IIS5)
Save — Recordset をファイルまたは Stream オブジェクトに保存します。

構文

recordset.Save Destination, PersistFormat

パラメータ

recordset
Recordset オブジェクを指定します。
Destination
省略可能です。Recordset を保存するファイルの完全なパス名を表すバリアント型 (Variant) の値、または Stream オブジェクトへの参照を指定します。
PersistFormat
省略可能です。Recordset の保存形式 (XML または ADTG) を PersistFormatEnum 値で指定します。既定値は adPersistADTG です。

戻り値

値を返しません。

説明

Save メソッドは、開いている Recordset でのみ呼び出すことができます。保存した Recordset を Destination から復元する場合は、Open メソッドを使用します。

Filter プロパティが Recordset に対して有効である場合、フィルタでアクセスできる行のみが保存されます。Recordset が階層の場合、親の Recordset を含めて、現在の子 Recordset と、その子がすべて保存されます。子 Recordset の 1 つで Save メソッドを呼び出す場合は、その Recordset と、その子がすべて保存されますが、その親は保存されません。

Recordset を初めて保存するときに、Destination の指定を省略することができます。Destination を省略すると、Recordset の Source プロパティの値に設定された名前で新規ファイルが作成されます。

初めて保存した後に、続けて Save メソッドを呼び出すときは、Destination を指定しないでください。指定すると、実行時エラーが発生します。Save メソッドを続けて呼び出すときに新しい Destination を指定すると、Recordset は新しい保存先に保存されます。ただし、その場合、新しい保存先と元の保存先の両方が開いた状態になります。

Save メソッドは、Recordset または Destination を閉じません。したがって、Recordset の操作を継続し、最新の変更を保存することができます。Recordset を閉じるまで、Destination は開いたままになります。その間、ほかのアプリケーションからその Destination に対する読み取りは可能ですが、書き込みはできません。

セキュリティ上の理由により、Save メソッドは、Microsoft Internet Explorer で実行されるスクリプトからは、低レベルおよびカスタムのセキュリティ設定の使用時のみ許可されます。セキュリティに関する問題の詳細については、「Microsoft Data Access Technical Articles」の「ActiveX Data Objects (ADO) Technical Articles」の、「ADO and RDS Security Issues in Microsoft Internet Explorer」を参照してください。

非同期の Recordset のフェッチ、実行、または更新の操作中に Save メソッドが呼び出された場合、Save メソッドは、非同期操作が完了するまで待機します。

レコードは、Recordset の最初の行から順に保存されます。Save メソッドが終了すると、カレント行の位置は Recordset の最初の行になります。

正しい結果を得るには、Save メソッドの実行時に、CursorLocation プロパティを adUseClient に設定してください。プロバイダが Recordset オブジェクトを保存するために必要なすべての機能をサポートしていない場合は、Cursor Service がその機能を提供します。

Recordset の CursorLocation プロパティが adUseServer に設定されたままの場合、その Recordset の更新機能が制限されます。プロバイダの機能によって異なりますが、通常は、単一テーブルの更新、挿入、および削除のみが許可されます。この設定では、 Resync メソッドも利用できません。

注意 ADO では、Fields の種類が adVariant、adIDispatch、または adIUnknown に設定された Recordset の保存はサポートされていないため、予期しない結果が生じることがあります。

検索文字列 (OrderDate > ’12/31/1999′ など) 形式の Filter だけが、永続化された Recordset の内容に影響します。Bookmark の配列で作成されたフィルタ、または FilterGroupEnum の値を使用して作成されたフィルタは、永続化された Recordset の内容に影響しません。これらの規則は、クライアント側とサーバー側のいずれで作成された Recordset にも当てはまります。

Destination パラメータには、OLE DB IStream インターフェイスをサポートするすべてのオブジェクトを指定できるので、Recordset を直接 ASP Response オブジェクトに保存することができます。詳細については、「XML Recordset の永続化のシナリオ」を参照してください。

次の Visual Basic コードに示すように、XML 形式の Recordset を MSXML DOM オブジェクトのインスタンスに保存することもできます。

1
2
3
4
5
6
7
8
9
10
<%
    Dim xDOM As New MSXML.DOMDocument
    Dim rsXML As New ADODB.Recordset
    Dim sSQL As String, sConn As String
    sSQL = "SELECT customerid, companyname, contactname FROM customers"
    sConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files" & _
            "\Common Files\System\msadc\samples\NWind.mdb"
    rsXML.Open sSQL, sConn
    rsXML.Save xDOM, adPersistXML   \'Save Recordset directly into a DOM tree.
%>

Requery

(PWS4 IIS4 IIS5)
Requery — オブジェクトの基になるクエリを再実行して Recordset オブジェクトのデータを更新します。

構文

recordset.Requery Options

パラメータ

recordset
Recordset オブジェクを指定します。
Options
省略可能です。この操作に関する ExecuteOptionEnum 値と CommandTypeEnum 値を含むビットマスクを指定します。

注意 Options を adAsyncExecute に設定すると、この操作は非同期で実行され、操作の終了時に RecordsetChangeComplete イベントが発生します。

Requery を使用する場合、ExecuteOpenEnum に adExecuteNoRecords または adExecuteStream を指定しないでください。

戻り値

値を返しません。

説明

Requery メソッドは、元のコマンドを再実行してデータをもう一度取得することにより、データ ソースから Recordset オブジェクトの内容全体を更新します。このメソッドの呼び出しは、Close および Open メソッドを連続して呼び出すのと同じです。カレントレコードを編集しているとき、または新規レコードを追加しているときにこのメソッドを呼び出すと、エラーが発生します。

Recordset オブジェクトが開いている間、カーソルの属性を定義するプロパティ (CursorType、LockType、MaxRecords など) は、読み取り専用になっています。このため、Requery メソッドでは、現在のカーソルの更新のみを行うことができます。カーソルのプロパティを変更して結果を参照するには、Close メソッドを使用して、それらのプロパティを読み取り/書き込み可能にする必要があります。その後、目的のプロパティの設定を変更し、Open メソッドを呼び出してカーソルを再度開きます。


Open

(PWS4 IIS4 IIS5)
Open — カーソルを開きます。

構文

recordset.Open Source, ActiveConnection, CursorType, LockType, Options

パラメータ

recordset
Recordset オブジェクを指定します。
Source
省略可能です。有効な Command オブジェクト、SQL ステートメント、テーブル名、ストアドプロシージャの呼び出し、URL、または永続的に保存された Recordset が格納されているファイル名または Stream オブジェクト名の評価に使うバリアント型 (Variant) の値を指定します。
ActiveConnection
省略可能です。有効な Connection オブジェクトのオブジェクト変数名の評価に使うバリアント型 (Variant) の値、または ConnectionString パラメータを含む文字列型 (String) の値を指定します。
CursorType
省略可能です。プロバイダが Recordset を開くときに使うカーソルの種類を決めるための CursorTypeEnum 値を指定します。既定値は adOpenForwardOnly です。
LockType
省略可能です。プロバイダが Recordset を開くときに使うロック (同時作用) の種類を決めるための LockTypeEnum 値を指定します。既定値は adLockReadOnly です。
Options
省略可能です。Source 引数が Command オブジェクト以外のソースを表す場合にプロバイダが Source 引数を評価する方法、または以前に保存されていたファイルから Recordset を復元する必要があることを示す長整数型 (Long) の値を指定します。1 つまたは複数の CommandTypeEnum 値または ExecuteOptionEnum 値を指定できます。これらの値は、ビット単位の AND 演算子で組み合わせて使用することができます。

注意 永続化された Recordset を含む Stream から Recordset を開く場合、ExecuteOptionEnum 値の adAsyncFetchNonBlocking を使用しても無効です。この場合、フェッチは同期であり、ブロッキングが行われます。

Open メソッドを使用する場合、ExecuteOpenEnum に adExecuteNoRecords または adExecuteStream を指定しないでください。

戻り値

値を返しません。

説明

ADO の Recordset の既定のカーソルは、サーバー側にある読み取り専用の前方スクロール カーソルです。

Recordset オブジェクトで Open メソッドを使うと、ベース テーブルからのレコード、クエリの結果、または以前に保存された Recordset を表すカーソルを開くことができます。

データ ソースを指定するには、オプションの Source 引数を使います。Source 引数には、Command オブジェクト変数、SQL ステートメント、ストアド プロシージャ、テーブル名、URL、またはファイルのフル パス名を指定できます。Source にファイルのパス名を指定する場合は、フル パス (“c:\dir\file.rst”)、相対パス (“..\file.rst”)、または URL (“http://files/file.rst”) で指定することができます。

ActiveConnection 引数は ActiveConnection プロパティに対応し、Recordset オブジェクトを開く接続を指定します。この引数に接続の定義を指定した場合、ADO では、指定されたパラメータを使って新規接続を開きます。クライアント側カーソル (CursorLocation = adUseClient) で Recordset を開いた後は、このプロパティの値を変更して別のプロバイダに更新を送信することができます。また、このプロパティを Nothing (Microsoft Visual Basic の場合) または NULL に設定すると、その Recordset を任意のプロバイダから切断することができます。ただし、サーバー側カーソルの ActiveConnection を変更すると、エラーが発生します。

Recordset オブジェクトのプロパティに対応するその他の引数 (Source、CursorType、および LockType) と、プロパティの関係は次のとおりです。

* Recordset オブジェクトを開く前のプロパティは、読み取り/書き込み可能です。
* Open メソッドの実行時に、対応する引数を指定しなければ、プロパティの設定値が使用されます。引数を指定した場合は、対応するプロパティの設定値が上書きされて引数の値に更新されます。
* Recordset オブジェクトを開いた後は、プロパティは読み取り専用になります。

注意 Recordset オブジェクトの Source プロパティに有効な Command オブジェクトが設定されている場合、その Recordset オブジェクトが開いていなくても、ActiveConnection プロパティは読み取り専用になります。

Source 引数に Command オブジェクトを指定する場合に、同時に ActiveConnection 引数を指定すると、エラーが発生します。Command オブジェクトの ActiveConnection プロパティは、あらかじめ有効な Connection オブジェクトまたは接続文字列に設定しておく必要があります。

Source 引数に Command オブジェクト以外のソースを指定する場合は、Options 引数を使って Source 引数の評価を最適化することができます。Options 引数が指定されていない場合は、パフォーマンスが低下する可能性があります。これは、引数が SQL ステートメント、ストアドプロシージャ、URL、テーブル名のいずれであるかを判断するために、プロバイダを呼び出す必要があるためです。指定する Source の種類がわかっている場合は、Options 引数を設定することにより、該当するコードに直接ジャンプすることができます。Options 引数が Source の種類と一致しない場合は、エラーが発生します。

Source 引数に Stream オブジェクトを指定する場合は、ほかの引数は指定しないでください。そのようにすると、エラーが発生します。Stream から Recordset を開く場合は、ActiveConnection の情報は保持されません。

Recordset に接続が関連付けられていない場合、Options 引数の既定値は adCmdFile です。代表的な例では、永続的に保存された Recordset オブジェクトの場合がこれに該当します。

データ ソースがレコードを返さない場合、プロバイダは BOF および EOF プロパティの両方を True に設定し、カレントレコードの位置が未定義になります。カーソルの種類によっては、この空の Recordset オブジェクトに新規データを追加することができます。

開いている Recordset オブジェクトでの操作が完了したら、Close メソッドを使って関連するシステムリソースを解放します。オブジェクトを閉じてもメモリからは削除されないので、そのオブジェクトのプロパティ設定を変更し、Open メソッドを使ってもう一度開くことができます。オブジェクトをメモリから完全に削除するには、オブジェクト変数に Nothing を設定します。

ActiveConnection プロパティを設定する前に、オペランドなしで Open メソッドを呼び出して、Recordset の Fields コレクションにフィールドを追加することによって作成された Recordset のインスタンスを作成することができます。

CursorLocation プロパティに adUseClient を設定している場合は、2 とおりの方法で非同期に行を取得することができます。推奨される方法は、Options を adAsyncFetch に設定することです。もう 1 つの方法として、Properties コレクションで “非同期行セット処理” ダイナミックプロパティを使用することもできますが、Options パラメータを adAsyncFetch に設定していない場合は、関連して取得されたイベントが失われる可能性があります。

注意 MS Remote プロバイダのバックグラウンド フェッチは、Open メソッドの Options パラメータを通してのみサポートされます。


NextRecordset

(PWS4 IIS4 IIS5)
NextRecordset — 現在の Recordset オブジェクトをクリアし、一連のコマンド操作を実行して次の Recordset を返します。

構文

recordset1.NextRecordset( RecordsAffected )

パラメータ

recordset1
Recordset オブジェクを指定します。
RecordsAffected
省略可能です。長整数型 (Long) の変数を指定します。プロバイダは、操作の影響を受けたレコード数をここに返します。

戻り値

Recordset オブジェクトを返します。構文の recordset1 と recordset2 には、同じ Recordset オブジェクト、または別のオブジェクトを指定できます。別の Recordset オブジェクトを指定する場合、NextRecordset の呼び出し後に元の Recordset (recordset1) の ActiveConnection プロパティを再設定すると、エラーが発生します。

注意 このパラメータは、操作の影響を受けたレコード数のみを返します。Recordset を作成するために使用された Select ステートメントからのレコード数を返すことはありません。

説明

NextRecordset メソッドでは、複合コマンド ステートメントの次のコマンドの結果、または複数の結果を返すストアド プロシージャの結果を返します。Command オブジェクトで Execute メソッドを使用するか、または Recordset オブジェクトで Open メソッドを使用して、”SELECT * FROM table1;SELECT * FROM table2″ などの複合コマンド ステートメントに基づく Recordset オブジェクトを開いた場合、最初のコマンドのみが実行され、その結果が recordset に返されます。ステートメントの次のコマンドの結果にアクセスするには、NextRecordset メソッドを呼び出します。

残りの結果が存在し、複合ステートメントを含む Recordset が切断されているか、プロセスの境界を越えてマーシャリングされていない限り、NextRecordset メソッドは Recordset オブジェクトを返し続けます。行を返すコマンドが成功しても返すレコードがない場合、Recordset オブジェクトは空の状態で開かれます。これに該当するかどうかを調べるには、BOF と EOF のプロパティが両方とも True になっているかどうかを確認します。行を返さないコマンドが正しく実行された場合、返された Recordset オブジェクトは閉じています。この場合は、Recordset オブジェクトで State プロパティをテストして確認します。残りの結果が存在しない場合、recordset は Nothing に設定されます。

切断された Recordset オブジェクトでは、ActiveConnection が Nothing (Microsoft Visual Basic) または NULL (その他の言語) に設定されているため、NextRecordset メソッドは使用できません。

即時更新モードで編集を行っているときに NextRecordset メソッドを呼び出すとエラーが発生します。Update または CancelUpdate メソッドを先に呼び出す必要があります。

複合ステートメントの複数のコマンドにパラメータを渡すには、Parameters コレクションを使用するか、または元の Open メソッドまたは Execute メソッドの呼び出しで配列を渡します。この場合、コレクションまたは配列のパラメータの並び順は、一連のコマンドの並び順と同じでなければなりません。出力パラメータの値を読み込むには、すべての結果の読み込みが終了している必要があります。

複合ステートメント内のコマンドをいつ実行するかは、OLE DB プロバイダが決定します。たとえば、Microsoft OLE DB Provider for SQL Server は、複合ステートメントを受け取ったときにすべてのコマンドをバッチで実行します。結果の Recordset は、NextRecordset を呼び出したときに返されます。

ただし、それ以外のプロバイダでは、ステートメント内の次のコマンドが NextRecordset の呼び出しの後にしか実行されないこともあります。そのようなプロバイダの場合、ステートメントのすべてのコマンドを実行する前に Recordset オブジェクトを明示的に閉じると、残りのコマンドは実行されません。


MovePrevious

(PWS4 IIS4 IIS5)
MovePrevious — 指定の Recordset オブジェクトの前のレコードに移動して、そのレコードをカレント レコードにします。

構文

recordset.MovePrevious

パラメータ

recordset
Recordset オブジェクを指定します。

説明

MovePrevious メソッドでは、カレント レコードの位置を 1 レコード後方 (Recordset の始端方向) に移動します。この場合、Recordset オブジェクトがブックマークまたは後方スクロールタイプのカーソルをサポートしている必要があります。サポートしていない場合にこのメソッドを実行すると、エラーが発生します。カレントレコードが最初のレコードの場合に MovePrevious メソッドを呼び出すと、カレント レコードは Recordset の最初のレコードの前に設定され、BOF が True になります。BOF プロパティが既に True の場合、後方へ移動しようとすると、エラーが発生します。Recordset オブジェクトがブックマークまたは後方スクロールタイプのカーソルをサポートしていない場合、MovePrevious メソッドを実行すると、エラーが発生します。