Поделиться через


Практическое руководство. Доступ к внешним источникам данных

При работе с шаблоном формы InfoPath можно написать код для доступа к дополнительным источникам данных формы и управления содержащимися в них данными.

Каждый дополнительный источник данных представляется объектом, создаваемым с помощью класса DataSource, и соответствует хранящимся данным, полученным из некоторого внешнего источника данных, например, из базы данных или из запроса веб-службы. Эти источники данных указываются как дополнительные, поскольку при сохранении пользователем формы InfoPath сохраняются только данные из основного (или главного) источника данных, но не данные из дополнительных источников. Подключение к источнику данных представляется объектом, который создается с помощью одного из классов "подключение данных", например класса WebServiceConnection, который представляет подключение данных к веб-службе XML.

Созданный объект DataSource представляет хранилище XML-данных, возвращенное подключением данных (из базы данных или из запроса веб-сервера), а класс "подключение данных" представляет само подключение данных (в соответствии с описанием и именем, указанными с помощью команды Подключения данных в меню Сервис).

Объектная модель InfoPath поддерживает доступ к дополнительным источникам данных формы посредством использования класса DataSource в сочетании с классом DataSourceCollection.

Объектная модель InfoPath также предоставляет набор классов подключений данных, где содержатся сведения об используемых формой подключениях данных.

ЗаметкаЗаметка

В приложении Microsoft InfoPath 2003 подключение данных указывается как адаптер данных.

Существует два типа подключений данных. Подключения запросов используются для получения данных, которые затем сохраняются в дополнительном источнике данных. Подключения отправки используются для отправки данных, например, в базу данных или веб-службу. Отправленные данные копируются из основных или дополнительных источников данных.

Обзор класса DataSourceCollection

Класс DataSourceCollection предоставляет следующие свойства и методы, которые могут использоваться разработчиками форм для управления экземплярами объектов DataSource, содержащимися в форме.

Имя Описание

CountP:Microsoft.Office.InfoPath.WindowCollection.Count

Возвращает количество экземпляров объектов DataSource в семействе.

GetEnumeratorM:Microsoft.Office.InfoPath.FormErrorCollection.DeleteAll

Возвращает объект IEnumerator, который можно использовать для выполнения итерации по семейству.

ItemP:Microsoft.Office.InfoPath.FormErrorCollection.Item(System.Int32)

Возвращает ссылку на указанный объект DataSource по значению индекса.

ItemP:Microsoft.Office.InfoPath.FormErrorCollection.Item(System.Int32)

Возвращает ссылку на указанный объект DataSource по имени.

Обзор класса DataSource

Класс DataSource предоставляет следующие свойства и метод, которые могут использоваться разработчиками форм для взаимодействия с дополнительным источником данных InfoPath.

Имя Описание

CreateNavigatorM:Microsoft.Office.InfoPath.FormErrorCollection.DeleteAll

Возвращает объект XPathNavigator для просмотра и редактирования источника данных

QueryConnectionP:Microsoft.Office.InfoPath.FormErrorCollection.Count

Возвращает ссылку на связанный объект подключения данных.

Чтобы выполнить запрос для подключения данных и вставить возвращенные данные в виде XML в XML-узел, связанный с объектом DataSource, воспользуйтесь методом Execute для связанного объекта подключения данных.

NameP:Microsoft.Office.InfoPath.Permission.Enabled

Возвращает имя объекта DataSource.

ReadOnlyP:Microsoft.Office.InfoPath.Permission.Enabled

Возвращает значение, которое указывает наличие у источника данных атрибута только для чтения

GetNamedNodePropertyM:Microsoft.Office.InfoPath.AdoQueryConnection.BuildSqlFromXmlNodes(System.Xml.XPath.XPathNavigator)

Возвращает значение именованного свойства для указанного XML-узла, который должен являться узлом nonattribute в основном источнике данных.

SetNamedNodePropertyM:Microsoft.Office.InfoPath.AdoQueryConnection.BuildSqlFromXmlNodes(System.Xml.XPath.XPathNavigator)

Задает значение именованного свойства для указанного XML-узла, который должен являться узлом nonattribute в основном источнике данных.

Обзор классов подключений данных

Классы для доступа к подключениям данных представляют различные свойства и методы для получения и отправки данных через подключения к внешним источникам данных. Подключение данных, связанное с объектом DataSource, зависит от типа подключения внешних данных. Для доступа к подключениям данных приложение InfoPath реализует следующие классы.

Имя Описание

Класс AdoQueryConnection

Запрашивает источник данных ADO/OLEDB, ограничивается Microsoft Access и Microsoft SQL Server.

AdoSubmitConnectionT:Microsoft.Office.InfoPath.AdoQueryConnection

Отправляет данные в источник данных ADO/OLEDB, ограничивается Microsoft Access и Microsoft SQL Server.

SharepointListQueryConnectionT:Microsoft.Office.InfoPath.AdoQueryConnection

Запрашивает библиотеку документов или список SharePoint.

WebServiceConnectionT:Microsoft.Office.InfoPath.AdoQueryConnection

Подключается к веб-службе XML.

FileQueryConnectionT:Microsoft.Office.InfoPath.AdoQueryConnection

Запрашивает XML-файл.

FileSubmitConnection

Отправляет данные в XML-файл.

EmailSubmitConnection

Отправляет форму в виде вложения электронной почты.

Использование классов DataSourceCollection и DataSource

Объект DataSourceCollection, представляющий семейство источников данных, связывается с шаблоном формы через свойство DataSources класса XmlForm. Например, при создании дополнительного источника данных Employees, получающего данные из таблицы Employees базы данных компании "Борей", можно использовать объект DataSourceCollection для указания ссылки на объект DataSource, представляющий полученные данные.

В следующем примере кода имя дополнительного источника данных передается в метод доступа класса DataSourceCollection, возвращающего ссылку на объект DataSource, представляющий полученные данные таблицы Employees. XML-узел, где хранятся данные, полученные из дополнительного источника данных, отображается в окне сообщения с помощью метода CreateNavigator класса DataSource для доступа к свойству InnerXml класса XPathNavigator.

// Instantiate a variable to access the specified data source
// from the DataSourceCollection of the form.
DataSource myDataSource = 
   this.DataSources["Employees"];

// Display the XML data from the secondary data source.
MessageBox.Show("Data source data: " +
   myDataSource.CreateNavigator().InnerXml.ToString());
' Instantiate a variable to access the specified data source
' from the DataSourceCollection of the form.
Dim myDataSource As DataSource = _
   Me.DataSources("Employees")

' Display the XML data from the secondary data source.
MessageBox.Show("Data source data: " & _
   myDataSource.CreateNavigator().InnerXml.ToString())

Для управления данными, содержащимися в дополнительном источнике данных, используйте метод CreateNavigator класса DataSource, чтобы вернуть ссылку на объект XPathNavigator, расположенный на узле, где хранятся дополнительные данные. Чтобы управлять данными, можно воспользоваться свойствами и методами класса XPathNavigator. Дополнительные сведения см. в статье Практическое руководство. Работа с классами XPathNavigator и XPathNodeIterator.

Использование классов DataConnectionCollection и DataConnection

Объект DataConnectionCollection, представляющий семейство подключений данных, связывается с шаблоном формы через свойство DataConnections класса XmlForm. Например, при создании дополнительного источника данных Employees, получающего данные из таблицы Employees базы данных "Борей", можно использовать объект DataConnectionCollection, связанный с шаблоном формы, для указания ссылки на объект DataConnection, представляющий подключение к базе данных.

В следующем примере кода имя дополнительного источника данных передается в метод доступа класса DataConnectionCollection, который в данном случае возвращает ссылку на объект ADOQueryConnection, представляющий подключение к базе данных "Борей". Чтобы эта процедура работала правильно, необходимо явно привести возвращаемый объект к типу ADOQueryConnection. Для отображения строки подключения ADO в окне сообщения используется свойство Connection интерфейса ADOAdapterObject.

// Instantiate a variable to access the specified data connection
// from the DataConnectionCollection of the form. 
// You must cast to the specific data connection type
// (ADOQueryConnection) before you can access the data connection.
ADOQueryConnection myADOConnection = 
   (ADOQueryConnection)this.DataConnections["Employees"];

// Display the connection information for the data connection.
MessageBox.Show("Connection string: " + myADOConnection.Connection);
' Instantiate a variable to access the specified data connection
' from the DataConnectionCollection of the form. 
' You must cast to the specific data connection type
' (ADOQueryConnection) before you can access the data connection.
Dim myADOConnection As ADOQueryConnection = _
   DirectCast(Me.DataConnections("Employees"), ADOQueryConnection)

' Display the connection information for the data connection.
MessageBox.Show("Connection string: " & myADOConnection.Connection)

См. также

Концепции

Создание шаблонов форм InfoPath, работающих со службами Forms Services