Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Access 2013, Office 2013
В этом примере кода показано, как использовать ADO с поставщиком Microsoft OLE DB для публикации в Интернете. В этом сценарии вы создадите приложение Visual Basic, которое использует объекты Recordset, Record и Stream для отображения содержимого ресурсов, опубликованных поставщиком публикации в Интернете.
Для создания этого сценария необходимо выполнить следующие действия.
- Настройте проект Visual Basic.
- Инициализируйте поле списка Основное.
- Заполните поле списка Поля.
- Заполните текстовое поле Сведения.
Шаг 1. Настройка проекта Visual Basic
В этом сценарии предполагается, что в вашей системе установлен Microsoft Visual Basic 6.0 или более поздней версии, ADO 2.5 или более поздней версии, а также поставщик Microsoft OLE DB для публикации в Интернете.
Создание проекта ADO
В Microsoft Visual Basic создайте проект STANDARD EXE.
В меню Проект выберите Ссылки.
Выберите Microsoft ActiveX Data Objects 2.5 Library (Библиотека microsoft ActiveX Data Objects 2.5) и нажмите кнопку ОК.
Вставка элементов управления в основную форму
Добавьте элемент управления ListBox в Form1. Задайте для свойства Name значение lstMain.
Добавьте еще один элемент управления ListBox в Form1. Задайте для свойства Name значение lstDetails.
Добавьте элемент управления 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.