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 メソッドを実行すると、エラーが発生します。


MoveNext

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

構文

recordset.MoveNext

パラメータ

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

説明

MoveNext メソッドは、カレント レコードの位置を 1 レコード前方 (Recordset の終端方向) に移動します。カレントレコードが最後のレコードの場合に MoveNext メソッドを呼び出すと、カレント レコードが Recordset の最後のレコードの後に設定され、EOF が True になります。EOF プロパティが既に True の場合、前方へ移動しようとすると、エラーが発生します。

フィルタまたはソートが実行された Recordset でカレントレコードのデータを変更すると、その位置も変更されることがあります。その場合、MoveNext メソッドは正常に動作しますが、その位置が、元の位置からではなく、変更後の位置から 1 レコード先に移動されることに注意する必要があります。たとえば、カレント レコードのデータを、ソートされた Recordset の最後に移動するように変更した場合、MoveNext を呼び出すと、カレント レコードは Recordset の最後のレコードの後 (EOF = True) に設定されることになります。


MoveLast

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

構文

recordset.MoveLast

パラメータ

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

説明

MoveLast メソッドは、カレント レコードの位置を Recordset の最後のレコードに移動します。この場合、Recordset オブジェクトがブックマークまたは後方スクロールタイプのカーソルをサポートしている必要があります。サポートしていない場合にこのメソッドを実行すると、エラーが発生します。


MoveFirst

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

構文

recordset.MoveFirst

パラメータ

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

説明

MoveFirst メソッドは、カレント レコードの位置を Recordset の最初のレコードに移動します。

前方スクロールのみ可能な Recordset で両方向スクロールのサポートが必要な場合、CacheSize プロパティを使用してカーソルの後方スクロールをサポートするレコード キャッシュを作成し、Move メソッドを使って移動することができます。キャッシュされたレコードはメモリに読み込まれるため、必要以上のレコードのキャッシュは避けてください。前方スクロールのみ可能な Recordset オブジェクトで MoveFirst メソッドを呼び出すことはできますが、その場合、プロバイダで、Recordset オブジェクトを生成するコマンドが再度実行されることがあります。


Move

(PWS4 IIS4 IIS5)
Move — Recordset オブジェクトでカレント レコードの位置を移動します。

構文

recordset.Move NumRecords, Start

パラメータ

recordset
Recordset オブジェクを指定します。
NumRecords
カレント レコードの位置を移動するレコード数を指定する、符号付きの長整数型 (Long) の式を指定します。
Start
省略可能です。ブックマークとして評価される文字列型 (String) またはバリアント型 (Variant) の値を指定します。BookmarkEnum 値を使用することもできます。

説明

Move メソッドは、すべての Recordset オブジェクトでサポートされています。

NumRecords 引数が 0 よりも大きい場合、カレント レコードの位置は前方、つまり、Recordset の終端方向に移動します。NumRecords 引数が 0 よりも小さい場合、カレント レコードの位置は後方、つまり、Recordset の始端方向に移動します。

Move メソッドを呼び出してカレント レコードの位置を先頭レコードの前に移動しようとした場合、カレントレコードがレコードセットの先頭レコードの前の位置に設定され、BOF が True になります。BOF プロパティが既に True の場合、後方へ移動しようとすると、エラーが発生します。

Move メソッドを呼び出してカレントレコードの位置を最後のレコードの後に移動しようとした場合、カレント レコードがレコードセットの最後のレコードの後ろに設定され、EOF が True になります。EOF プロパティが既に True の場合、前方へ移動しようとすると、エラーが発生します。

空の Recordset オブジェクトから Move メソッドを呼び出すと、エラーが発生します。

Start 引数を指定した場合、Recordset オブジェクトではブックマークがサポートされていると見なされ、このブックマークを持つレコードが移動の基準となります。Start 引数を指定しない場合は、カレント レコードが移動の基準となります。

CacheSize プロパティを使用してプロバイダからのレコードをローカルにキャッシュしている場合、NumRecords 引数を渡したことによってカレントレコードの位置が現在キャッシュされているレコード グループの範囲外に移動されると、移動先のレコードから始まる新しいレコードグループが強制的に取り込まれます。新しく取り込まれるグループのサイズは CacheSize プロパティによって決まり、移動先のレコードが最初に取得されるレコードになります。

Recordset オブジェクトが前方スクロールのみ可能な場合でも、移動先が、現在キャッシュされているレコード セットの範囲内であれば、0 より小さい値を NumRecords 引数に指定することができます。Move メソッドを呼び出して、カレントレコードの位置を、キャッシュされている最初のレコードより前のレコードに移動しようとした場合は、エラーが発生します。このように、前方スクロールのみをサポートするプロバイダで、完全スクロールをサポートするレコードキャッシュを使用することができます。キャッシュされたレコードはメモリに読み込まれるため、必要以上のレコードのキャッシュは避けてください。前方スクロールのみ可能な Recordset オブジェクトでも、この方法で後方への移動を実行できますが、前方スクロールのみ可能な Recordset オブジェクトで MovePrevious メソッドを呼び出すと、エラーが発生します。

注意 前方スクロールのみ可能な Recordset で後方への移動がサポートされているかどうかは、プロバイダによります。カレント レコードが Recordset の最後のレコードの後ろにある場合、後方への Move を実行しても現在の位置が正しく示されないことがあります。