Escenario de publicación en Internet
Se aplica a: Access 2013, Office 2013
En este ejemplo de código, se muestra cómo usar ADO con Microsoft OLE DB Provider for Internet Publishing. En este escenario, creará una aplicación de Visual Basic que usa objetos Recordset, Record y Stream para mostrar el contenido de recursos publicados con el proveedor de publicaciones en Internet.
Para crear el escenario, siga estos pasos:
- Configure el proyecto de Visual Basic.
- Inicialice el cuadro de lista Principal.
- Rellene el cuadro de lista Campos.
- Rellene el cuadro de texto Detalles.
Paso 1: Configurar el proyecto de Visual Basic
En este escenario, se supone que han instalado Microsoft Visual Basic 6.0 y ADO 2.5, o versiones posteriores, y Microsoft OLE DB Provider for Internet Publishing en el sistema.
Creación de un proyecto de ADO
En Microsoft Visual Basic, cree un nuevo proyecto EXE estándar.
En el menú Herramientas, haga clic en Referencias.
Seleccione Microsoft ActiveX Data Objects 2.5 Library (Biblioteca de Microsoft ActiveX Data Objects 2.5) y, a continuación, haga clic en Aceptar.
Insertar controles en el formulario principal
Agregue un control ListBox a Form1. Establezca su propiedad Name en lstMain.
Agregue otro control ListBox a Form1. Establezca su propiedad Name en lstDetails.
Agregue un control TextBox a Form1. Establezca su propiedad Name en txtDetails.
Paso 2: Inicializar el cuadro de lista Principal
Declarar objetos Record y Recordset globales
Inserte el código siguiente en la sección de declaraciones generales de Form1:
Option Explicit Dim grec As Record Dim grs As Recordset
Este código declara referencias de objetos globales para Record y Recordset que se usarán posteriormente en este escenario.
Conectarse a una dirección URL y rellenar lstMain
Inserte el código siguiente en el controlador del evento Form Load para 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 Sub
Este código crea instancias de los objetos globales Record y Recordset. El registro
grec
se abre con una dirección URL especificada como ActiveConnection. Si la dirección URL existe, se abre; si aún no existe, se crea.Tenga en cuenta que debe reemplazar por
https://servername/foldername/
una dirección URL válida del entorno.El objeto Recordset
grs
se abre en los elementos secundarios del objeto Recordgrec
. A continuación, lstMain se rellena con los nombres de archivo de los recursos publicados en la dirección URL.
Paso 3: Rellenar el cuadro de lista Campos
Inserte el siguiente código en el controlador del evento Click de 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 Sub
Este código declara y crea instancias de objetos
rec
Record y Recordset locales yrs
, respectivamente.La fila correspondiente al recurso seleccionado en lstMain se convierte en la fila actual de
grs
. A continuación, se borra el cuadro de lista Detalles yrec
se abre con la fila actual degrs
como origen.Si el recurso es un registro de colección (como especifica RecordType), el objeto Recordset
rs
local se abre en los elementos secundarios derec
. A continuación, lstDetails se rellena con los valores de las filas ders
.Si el recurso es un registro simple,
recFields
se llama a . Para obtener más información sobrerecFields
, consulte el paso siguiente.Si el recurso es un documento estructurado, entonces no se implementa ningún código.
Paso 4: Rellenar el cuadro de texto Detalles
Cree una subrutina denominada
recFields
e inserte el código siguiente: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 Sub
Este código rellena lstDetails con los campos y valores del registro simple pasado a
recFields
. Si el recurso es un archivo de texto, se abre un Stream de texto a partir del registro. El código determina si el juego de caracteres es ASCII y copia el contenido de Stream entxtDetails
.