Сценарий публикации в Интернете

Область применения: Access 2013, Office 2013

В этом примере кода показано, как использовать ADO с поставщиком Microsoft OLE DB для публикации в Интернете. В этом сценарии вы создадите приложение Visual Basic, которое использует объекты Recordset, Record и Stream для отображения содержимого ресурсов, опубликованных поставщиком публикации в Интернете.

Для создания этого сценария необходимо выполнить следующие действия.

  1. Настройте проект Visual Basic.
  2. Инициализируйте поле списка Основное.
  3. Заполните поле списка Поля.
  4. Заполните текстовое поле Сведения.

Шаг 1. Настройка проекта Visual Basic

В этом сценарии предполагается, что в вашей системе установлен Microsoft Visual Basic 6.0 или более поздней версии, ADO 2.5 или более поздней версии, а также поставщик Microsoft OLE DB для публикации в Интернете.

Создание проекта ADO

  1. В Microsoft Visual Basic создайте проект STANDARD EXE.

  2. В меню Проект выберите Ссылки.

  3. Выберите Microsoft ActiveX Data Objects 2.5 Library (Библиотека microsoft ActiveX Data Objects 2.5) и нажмите кнопку ОК.

Вставка элементов управления в основную форму

  1. Добавьте элемент управления ListBox в Form1. Задайте для свойства Name значение lstMain.

  2. Добавьте еще один элемент управления ListBox в Form1. Задайте для свойства Name значение lstDetails.

  3. Добавьте элемент управления TextBox в Form1. Задайте для свойства Name значение txtDetails.

Шаг 2. Инициализация списка Main

Объявление глобальных объектов Record и Recordset

  • Вставьте следующий код в (Общие) (объявления) для Form1:

    
      Option Explicit 
      Dim grec As Record 
      Dim grs As Recordset 
    

    Этот код объявляет глобальные ссылки на объекты Record и Recordset , которые будут использоваться позже в этом сценарии.

Подключение к URL-адресу и заполнение lstMain

  • Вставьте следующий код в обработчик событий Form Load для 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 
    

    Этот код создает экземпляры глобальных объектов Record и Recordset . Записьgrec открывается с URL-адресом, указанным как ActiveConnection. Если URL-адрес существует, он открывается; Если он еще не существует, он создается.

    Обратите внимание, что следует заменить https://servername/foldername/ допустимым URL-адресом из вашей среды.

    Набор grsзаписей открывается в дочерних элементах записиgrec. Затем lstMain заполняется именами файлов ресурсов, опубликованных в URL-адресе.

Шаг 3. Заполнение списка Поля

  • Вставьте следующий код в обработчик событий Click объекта 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 
    

    Этот код объявляет и создает экземпляры локальных объектов recRecord и Recordset и rsсоответственно.

    Строка, соответствующая ресурсу, выбранному в lstMain, становится текущей строкой grs. После этого очистится поле списка Сведения и rec откроется с текущей строкой в grs качестве источника.

    Если ресурс является записью коллекции (как указано в RecordType), локальный набор rsзаписей открывается в дочерних элементах rec. Затем lstDetails заполняется значениями из строк rs.

    Если ресурс является простой записью, recFields вызывается метод . Дополнительные сведения о recFieldsсм. в следующем шаге.

    Код не реализуется, если ресурс является структурированным документом.

Шаг 4. Заполнение текстового поля "Сведения"

  • Создайте подпрограмму с именем recFields и вставьте следующий код:

    
      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 
    

    Этот код заполняет lstDetails полями и значениями простой записи, передаваемой в recFields. Если ресурс является текстовым файлом, из записи ресурса открывается текстовое Stream. Код определяет, является ли набор символов ASCII, и копирует содержимое Stream в txtDetails.