Microsoft KB Archive/248255

= How to use the ADO recordset, record and stream objects to open documents =

Article ID: 248255

Article Last Modified on 8/30/2004

-

APPLIES TO


 * Microsoft Data Access Components 2.5
 * Microsoft Data Access Components 2.6
 * Microsoft Data Access Components 2.7
 * Microsoft ActiveX Data Objects 2.7
 * Microsoft ActiveX Data Objects 2.5
 * Microsoft ActiveX Data Objects 2.6
 * Microsoft OLE DB 2.7

-



This article was previously published under Q248255



SUMMARY
In Microsoft OLE DB Provider for Internet Publishing, you can open folders and documents into ADO records and ADO recordsets. An ADO record object can represent a row in a recordset, or a single document or folder opened directly. An ADO stream object represents a file in memory. It can be used to display a document that is contained in a record object.



MORE INFORMATION
An ADO record object can represent a row in a recordset, or a single document or folder. The example code in this article describes opening a record from a row in an ADO recordset, and directly on a document. When you click Command1, a document is opened into an ADO recordset. A record object is used to retrieve the Recordset row that contains the document. When you click Command2, a document is opened directly into an ADO record object. In both cases, a stream object is opened on a record. Because a stream is a file in memory, you can perform actions such as displaying the file.

Note To be visible to ADO, the documents must reside in an Internet Information Server's virtual directory. The server should be running Microsoft Windows 2000 or later and Internet Information Server 5.0 or later. The client must have Internet Explorer 5 or later installed.

The following sample uses a document that is named Test.txt in a virtual directory that is named Test. The virtual directory may contain other folders and documents.  In Visual Basic create a new Standard EXE. By default, a form that is named Form1 is created. Set a Project Reference to the Microsoft ActiveX Data Objects Library. Add two Command buttons to Form1. By default, Command1 and Command2 are created. Add a Text box to Form1. By default, Text1 is created. Set the Multiline property of Text1 to True. Set the Scrollbars property of Text1 to Both.  In the Code window, paste the following code in the General Declarations section of Form1: Private Sub Command1_Click

Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Dim rec As ADODB.Record Set rec = New ADODB.Record Dim stm As ADODB.Stream Set stm = New ADODB.Stream 'Clear the text box Text1.Text = "" 'You must use Serverside cursors with Internet Publishing provider rs.CursorLocation = adUseServer 'Specify adCmdTableDirect when opening a document or folder rs.Open "test.txt", "Provider=MSDAIPP.DSO;" & _ "Data Source=http://localhost/test", _ adOpenForwardOnly, adLockReadOnly, adCmdTableDirect 'Read the current row of the Recordset into a Record rec.Open rs    'The RESOURCE_CONTENTCLASS may be used to determine ' the document type. In this case, it is text/plain Text1.Text = rec.Fields("RESOURCE_CONTENTCLASS").Value 'An ADO Stream may be Text or Binary stm.Type = adTypeText 'You must specify a Character set to display text stm.Charset = "ascii" 'Read the Record into the stream stm.Open rec, adModeRead, adOpenStreamFromRecord 'Now, read the stream into the text box 'Use the Steam's ReadText method for text, Read for binary Text1.Text = Text1.Text & vbCrLf & stm.ReadText

stm.Close Set stm = Nothing rec.Close Set rec = Nothing rs.Close Set rs = Nothing End Sub

Private Sub Command2_Click Dim rec As ADODB.Record Set rec = New ADODB.Record Dim stm As ADODB.Stream Set stm = New ADODB.Stream 'Clear the text box Text1.Text = "" 'Alternate connection string. 'If the provider is specified, you cannot use the URL syntax. 'If URL syntax is used, MSDAIPP.DSO is assumed, and ' provider cannot be specified rec.Open "test.txt", "URL=http://localhost/test",, , _ adCmdTableDirect stm.Type = adTypeText stm.Charset = "ascii" stm.Open rec, adModeRead, adOpenStreamFromRecord Text1.Text = stm.ReadText stm.Close Set stm = Nothing rec.Close Set rec = Nothing End Sub 

