Compartir a través de


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:

  1. Configure el proyecto de Visual Basic.
  2. Inicialice el cuadro de lista Principal.
  3. Rellene el cuadro de lista Campos.
  4. 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

  1. En Microsoft Visual Basic, cree un nuevo proyecto EXE estándar.

  2. En el menú Herramientas, haga clic en Referencias.

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

  1. Agregue un control ListBox a Form1. Establezca su propiedad Name en lstMain.

  2. Agregue otro control ListBox a Form1. Establezca su propiedad Name en lstDetails.

  3. 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 registrogrec 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 Recordsetgrs 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 recRecord 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 y rec se abre con la fila actual de grs como origen.

    Si el recurso es un registro de colección (como especifica RecordType), el objeto Recordsetrs local se abre en los elementos secundarios de rec. A continuación, lstDetails se rellena con los valores de las filas de rs.

    Si el recurso es un registro simple, recFields se llama a . Para obtener más información sobre recFields, 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 en txtDetails.