Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to: Access 2013, Office 2013
This code example demonstrates how to use ADO with the Microsoft OLE DB Provider for Internet Publishing. In this scenario, you will create a Visual Basic application that uses Recordset, Record, and Stream objects to display the contents of resources published with the Internet Publishing Provider.
The following steps are necessary to create this scenario:
- Set up the Visual Basic project.
- Initialize the Main list box.
- Populate the Fields list box.
- Populate the Details text box.
Step 1: Set up the Visual Basic project
In this scenario, it is assumed that you have Microsoft Visual Basic 6.0 or later, ADO 2.5 or later, and the Microsoft OLE DB Provider for Internet Publishing installed on your system.
Create an ADO project
In Microsoft Visual Basic, create a new Standard EXE project.
From the Project menu, choose References.
Select Microsoft ActiveX Data Objects 2.5 Library, and then click OK.
Insert controls on the main form
Add a ListBox control to Form1. Set its Name property to lstMain.
Add another ListBox control to Form1. Set its Name property to lstDetails.
Add a TextBox control to Form1. Set its Name property to txtDetails.
Step 2: Initialize the Main list box
Declare global Record and Recordset objects
Insert the following code into the (General) (Declarations) for Form1:
Option Explicit Dim grec As Record Dim grs As RecordsetThis code declares global object references for Record and Recordset objects that will be used later in this scenario.
Connect to a URL and populate lstMain
Insert the following code into the Form Load event handler for Form1:
Private Sub Form_Load() Set grec = New Record Set grs = New Recordset grec.Open "", "URL=https://servername/foldername/", , _ adOpenIfExists Or adCreateCollection Set grs = grec.GetChildren While Not grs.EOF lstMain.AddItem grs(0) grs.MoveNext Wend End SubThis code instantiates the global Record and Recordset objects. The Record
grecis opened with a URL specified as the ActiveConnection. If the URL exists, it is opened; if it does not already exist, it is created.Note that you should replace
https://servername/foldername/with a valid URL from your environment.The Recordset
grsis opened on the children of the Recordgrec. The lstMain is then populated with the file names of the resources published to the URL.
Step 3: Populate the Fields list box
Insert the following code into the Click event handler of lstMain:
Private Sub lstMain_Click() Dim rec As Record Dim rs As Recordset Set rec = New Record Set rs = New Recordset grs.MoveFirst grs.Move lstMain.ListIndex lstDetails.Clear rec.Open grs Select Case rec.RecordType Case adCollectionRecord: Set rs = rec.GetChildren While Not rs.EOF lstDetails.AddItem rs(0) rs.MoveNext Wend Case adSimpleRecord: recFields rec, lstDetails, txtDetails Case adStructDoc: End Select End SubThis code declares and instantiates local Record and Recordset objects
recandrsrespectively.The row corresponding to the resource selected in lstMain is made the current row of
grs. The Details list box is then cleared andrecis opened with the current row ofgrsas the source.If the resource is a collection record (as specified by RecordType), the local Recordset
rsis opened on the children ofrec. lstDetails is then filled with the values from the rows ofrs.If the resource is a simple record,
recFieldsis called. For more information aboutrecFields, see the next step.No code is implemented if the resource is a structured document.
Step 4: Populate the Details text box
Create a new subroutine named
recFieldsand insert the following code:Sub recFields(r As Record, l As ListBox, t As TextBox) Dim f As Field Dim s As Stream Set s = New Stream Dim str As String For Each f In r.Fields l.AddItem f.Name & ": " & f.Value Next t.Text = "" If r!RESOURCE_CONTENTCLASS = "text/plain" Then s.Open r, adModeRead, adOpenStreamFromRecord str = s.ReadText(1) s.Position = 0 If Asc(Mid(str, 1, 1)) = 63 Then '//63 = "?" s.Charset = "ascii" s.Type = adTypeText End If t.Text = s.ReadText(adReadAll) End If End SubThis code populates lstDetails with the fields and values of the simple record passed to
recFields. If the resource is a text file, a text Stream is opened from the resource record. The code determines if the character set is ASCII, and copies the Stream contents intotxtDetails.