ストリームと永続性

Recordset オブジェクトの Save メソッドでファイル内に Recordset を格納し (つまり、"永続")、Open メソッドでそのファイルから Recordset を復元します。

同様に、Save および Open メソッドで RecordsetStream オブジェクトに保存することができます。この機能は、リモート データ サービス (RDS) および Active Server Pages (ASP) と連携して使用する場合に、特に役に立ちます。

この永続性を ASP ページ自体でどのように使用できるかの詳細については、最新の ASP マニュアルを参照してください。

次に、Stream オブジェクトと永続性を使用する方法についてのシナリオをいくつか示します。

シナリオ 1:

このシナリオでは、Recordset をファイルへ、次に Stream へ単純に保存します。次に、この永続性が保たれたストリームを別の Recordset で開きます。

Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim stm As ADODB.Stream

rs1.Open    "SELECT * FROM Authors", "DSN=Pubs;uid=sa;pwd=;", _
            adopenStatic, adLockReadOnly, adCmdText
rs1.Save "c:\myfolder\mysubfolder\myrs.xml", adPersistXML
rs1.Save stm, adPersistXML
rs2.Open stm

シナリオ 2:

このシナリオでは、Recordset を XML 形式で Stream に保存します。次に、その Stream をユーザーが参照、操作、または表示できる文字列に読み込みます。

Dim rs As New ADODB.Recordset
Dim stm As New ADODB.Stream
Dim strRst As String

' Open, save, and close the recordset. 
rs.Open "select * from Authors", "dsn=Pubs;uid=sa;pwd=;"
rs.Save stm, adPersistXML
rs.Close
Set rs = nothing

' Put saved recordset into a string variable.
strRst = stm.ReadText(adReadAll)

' Examine, manipulate, or display the XML data.
...

シナリオ 3:

この例では、Recordset を XML として直接 Response オブジェクトに保存する ASP コードを示します。

...
<%
response.ContentType = "text/xml"

' Create and open a recordset.
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select * from Authors", "dsn=Pubs;uid=sa;pwd=;"

' Save recordset directly into output stream.
rs.Save Response, adPersistXML 

' Close recordset
rs.Close
Set rs = nothing
%>
...

シナリオ 4:

このシナリオでは、ASP コードで、ATG 形式の Recordset の内容をクライアントに書き出します。Cursor Service で、このデータ使用して接続されていない Recordset を作成することができます。

RDS DataControl の新しいプロパティの URL は、Recordset を生成する .asp ページをポイントします。これは、サーバー側の DataFactory オブジェクトまたはユーザー作成のビジネス オブジェクトを使用する RDS なしで、Recordset を取得できるということを示しています。したがって、RDS プログラミング モデルが著しく簡単になります。

http://server/directory/recordset.asp という名前のサーバー側のコード

<%
Dim rs 
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select au_fname, au_lname, phone from Authors", "dsn=Pubs"
response.ContentType = "multipart/mixed"
rs.Save response, adPersistADTG
%>

クライアント側のコード

<HTML>
<HEAD>
<TITLE>RDS Query Page</TITLE>
</HEAD>
<body>
<CENTER>
<H1>Remote Data Service 2.5</H1>
<TABLE DATAsrc="#dc1">
    <TR> 
        <TD><SPAN DATAFLD="au_fname"></SPAN></TD>
        <TD><SPAN DATAFLD="au_lname"></SPAN></TD>
        <TD><SPAN DATAFLD="phone"></SPAN></TD>
    </TR>
</TABLE>
<BR>

<OBJECT classid="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33"
    ID=DC1 HEIGHT=1 WIDTH = 1>
    <PARAM NAME="URL" VALUE="http://server/directory/recordset.asp">    
</OBJECT>

</SCRIPT>
</BODY>
</HTML>

必要に応じて、クライアントで Recordset オブジェクトを使用することもできます。

...
function GetRs() 
    {
    rs = CreateObject("ADODB.Recordset");
    rs.Open "http://server/directory/recordset.asp"
    DC1.SourceRecordset = rs;
    }
...