Compartilhar via


Fluxos e persistência

Aplica-se ao: Access 2013, Office 2013

O método Save do objeto Recordset armazena, ou mantém, um Recordset em um arquivo, e o método Open restaura Recordset desse arquivo.

Com o ADO 2.5, os métodos Save e Open também podem manter um Recordset em um objeto Stream. Esse recurso é especialmente útil quando se trabalha com o RDS (Remote Data Service) e o ASP (Active Server Pages).

Para obter mais informações sobre como usar a persistência em páginas ASP, consulte a documentação atual do ASP.

Alguns cenários a seguir mostram como usar os objetos Stream e a persistência.

Cenário 1

Este cenário simplesmente salva um Recordset em um arquivo e, em seguida, em um Stream. Em seguida, ele abre o fluxo persistente em outro 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 

Cenário 2

Este cenário mantém um Recordset em um Stream no formato XML. Em seguida, ele lê Stream em uma sequência de caracteres que você pode examinar, manipular ou exibir.

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

Cenário 3

Este código de exemplo mostra um código ASP mantendo um Recordset como XML diretamente no objeto Response:

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

Cenário 4

Neste cenário, o código ASP cria o conteúdo de Recordset em formato ADTG para o cliente. O Microsoft Cursor Service for OLE DB pode usar esses dados para criar um Recordset desconectado.

Uma nova propriedade no RDS DataControl, URL, aponta para a página .asp que gera o Recordset. Isso significa que um objeto Recordset pode ser obtido sem RDS usando o objeto DataFactory do lado do servidor ou o usuário escrevendo um objeto comercial. Isso simplifica significativamente o modelo de programação RDS.

Código de servidor, denominado 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 
%> 

Código de cliente:

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

Os desenvolvedores também podem optar por usar um objeto Recordset no cliente:

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