Share via


セッションと永続化

適用先: Access 2013、Office 2013

Recordset オブジェクト Save メソッドは Recordset をファイルに格納または永続化し、Open メソッドはそのファイルから Recordset を復元します。

ADO 2.5 では、 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 
 
Set rs1 = New ADODB.Recordset 
Set rs2 = New ADODB.Recordset 
Set stm = New ADODB.Stream 
 
rs1.Open "SELECT * FROM Customers", "Provider=sqloledb;" & _ 
 "Data Source=MyServer;Initial Catalog=Northwind;" & _ 
 "Integrated Security=SSPI;""", adopenStatic, adLockReadOnly, adCmdText 
rs1.Save "c:\myfolder\mysubfolder\myrs.xml", adPersistXML 
rs1.Save stm, adPersistXML 
rs2.Open stm 

シナリオ 2

このシナリオでは、 RecordsetStream に XML 形式で永続化します。 その後、検査、操作、または表示できる文字列として Stream を読み取ります。

 
Dim rs As ADODB.Recordset 
Dim stm As ADODB.Stream 
Dim strRst As String 
 
Set rs = New ADODB.Recordset 
Set stm = New ADODB.Stream 
 
' Open, save, and close the recordset. 
rs.Open "SELECT * FROM Customers", "Provider=sqloledb;" & _ 
 "Data Source=MyServer;Initial Catalog=Northwind;" & _ 
 "Integrated Security=SSPI;""" 
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 Customers", "Provider=sqloledb;" & _ 
 "Data Source=MyServer;Initial Catalog=Northwind;" & _ 
 "Integrated Security=SSPI;""" 
 
' Save Recordset directly into output stream. 
rs.Save Response, adPersistXML 
 
' Close Recordset. 
rs.Close 
Set rs = nothing 
%> 
... 

シナリオ 4

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

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

以下は、https://server/directory/recordset.asp: という名前のサーバー側コードです。

 
<% 
Dim rs 
Set rs = Server.CreateObject("ADODB.Recordset") 
rs.Open "select au_fname, au_lname, phone from Authors", ""& _ 
 "Provider=sqloledb;Data Source=MyServer;" & _ 
 "Initial Catalog=Pubs;Integrated Security=SSPI;" 
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="https://server/directory/recordset.asp"> 
</OBJECT> 
 
</SCRIPT> 
</BODY> 
</HTML> 

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

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