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.
%>