다음을 통해 공유


방법: InfoPath 2003 개체 모델을 사용하여 외부 데이터 원본 액세스

InfoPath 2003 호환 개체 모델을 사용하는 InfoPath 양식 서식 파일로 작업하는 경우 양식의 보조 데이터 원본에 액세스하여 이 원본에 포함된 데이터를 조작하는 코드를 작성할 수 있습니다.

각 보조 데이터 원본은 DataSourceObject 인터페이스를 사용하여 인스턴스화된 개체로 나타내고, 데이터베이스 또는 웹 서비스 쿼리와 같은 외부 데이터 원본에서 가져온 저장된 데이터에 해당합니다. 사용자가 InfoPath 양식을 저장하는 경우 보조 데이터 원본의 데이터가 아니라 기본 데이터 원본의 데이터만 저장되므로 이러한 외부 데이터 원본을 보조 데이터 원본이라고 합니다. 데이터 원본에 대한 연결은 WebServiceAdapterObject 인터페이스와 같이 XML 웹 서비스에 대한 데이터 연결을 나타내는 "데이터 어댑터" 인터페이스 중 하나를 사용하여 인스턴스화된 개체로 나타냅니다.

인스턴스화된 DataSourceObject 개체는 데이터베이스나 웹 서비스 쿼리에 대한 데이터 연결에서 반환된 XML 데이터의 저장소를 나타내고 데이터 어댑터는 데이터 연결 자체를 나타냅니다.

InfoPath 개체 모델을 사용하면 DataObjectsCollection 인터페이스와 함께 DataSourceObject 인터페이스를 사용하여 양식의 보조 데이터 원본에 액세스할 수 있습니다.

InfoPath 개체 모델을 사용하면 양식에 사용되는 데이터 연결에 대한 정보가 포함된 데이터 어댑터 개체 집합을 제공할 수도 있습니다.

데이터 어댑터에는 '쿼리 어댑터'와'전송 어댑터'라는두 가지 종류가 있는데, 쿼리 어댑터는보조 데이터 원본에 저장되는 데이터를 가져오는 데 사용되고 전송 어댑터는데이터베이스나 웹 서비스에 데이터를 전송하는 데 사용됩니다. 전송할 데이터는 기본 데이터 원본 또는 보조 데이터 원본에서 복사됩니다.

DataObjectsCollection 인터페이스 개요

DataObjectsCollection 인터페이스는 양식 개발자가 양식에 포함된 DataSourceObject 인스턴스를 관리하는 데 사용할 수 있도록 다음과 같은 속성과 메서드를 제공합니다.

이름

설명

Count 속성

컬렉션에 포함된 DataSourceObject 인스턴스의 수를 반환합니다.

GetEnumerator 메서드

컬렉션 전체에서 반복하는 데 사용할 수 있는 IEnumerator를 반환합니다.

Item 속성

지정된 DataSourceObject 인스턴스에 대한 참조를 반환합니다.

DataSourceObject 인터페이스 개요

DataSourceObject 인터페이스는 양식 개발자가 InfoPath 보조 데이터 원본과 상호 작용하는 데 사용할 수 있도록 다음과 같은 속성과 메서드를 제공합니다.

이름

설명

Query 메서드

데이터 어댑터에 대한 쿼리를 실행하고 반환된 데이터를 DataSourceObject와 연결된 XML DOM(문서 개체 모델)에 XML로 삽입합니다.

DOM 속성

DataSourceObject를 사용하여 데이터를 저장하고 조작하는 데 사용되는 XML DOM에 대한 참조를 반환합니다.

Name 속성

DataSourceObject의 이름을 나타내는 문자열 값을 반환합니다.

QueryAdapter 속성

데이터 어댑터 개체와 연결된 참조를 반환합니다.

데이터 어댑터 인터페이스 개요

데이터 어댑터 액세스용 인터페이스는 외부 데이터 원본과의 연결을 통해 데이터를 검색하고 전송하는 여러 속성과 메서드를 제공합니다. DataSourceObject 개체와 연결되는 데이터 어댑터는 외부 데이터 연결 형식에 따라 다릅니다. InfoPath에서는 다음과 같은 데이터 어댑터 액세스용 인터페이스가 구현됩니다.

이름

설명

ADOAdapterObject 인터페이스

ADO/OLEDB 데이터 원본에 연결합니다. 이러한 연결은 Microsoft Access 및 Microsoft SQL Server™로 제한됩니다.

SharepointListAdapterObject 인터페이스

SharePoint 목록 또는 문서 라이브러리에 연결합니다.

WebServiceAdapterObject 인터페이스

XML 웹 서비스에 연결합니다.

XMLFileAdapterObject 개체

XML 파일에 연결합니다.

DataSourceObjects 및 DataSourceObject 인터페이스 사용

DataSourceObjects 컬렉션은 XDocument 인터페이스의 DataObjects 속성을 통해 액세스합니다. 예를 들어 Northwind Traders Microsoft Access 데이터베이스의 Employees 테이블에서 데이터를 가져오는 보조 데이터 원본(Employees)을 만드는 경우 DataSourceObjects 컬렉션을 사용하면 가져온 데이터를 나타내는 DataObject 개체에 대한 참조를 설정할 수 있습니다.

다음 코드 예제에서는 DataSourceObject 개체에 대한 참조를 반환하는 DataObjectsCollection 인터페이스의 접근자 속성에 보조 데이터 원본 이름이 전달됩니다. 보조 데이터 원본의 데이터가 DataSourceObject 인터페이스의 DOM 속성을 사용하여 XML DOM의 xml 속성에 액세스하여 메시지 상자에 표시됩니다.

public void CTRL1_5_OnClick(DocActionEvent e)
{
   // Instantiate a variable to access the specified data object
   // from the DataObjectsCollection of the form.
   // You must explicitly cast to the DataSourceObject type 
   // before you can access the data object.
   DataSourceObject myDataObject = 
      thisXDocument.DataObjects["Employees"] as DataSourceObject;

   // Display the data from the secondary data source using the 
   // XML DOM.
   thisXDocument.UI.Alert("Data Adapter: " + myDataObject.DOM.xml);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)

   ' Instantiate a variable to access the specified data object
   ' from the DataObjectsCollection of the form.
   Dim myDataObject As DataSourceObject = _
      thisXDocument.DataObjects("Employees")

   ' Display the data from the secondary data source using the 
   ' XML DOM.
   thisXDocument.UI.Alert("Data Adapter: " + myDataObject.DOM.xml)

End Sub

보조 데이터 원본에 들어 있는 데이터를 조작하려면 DataSourceObject 인터페이스의 DOM 속성을 사용하여 해당 데이터가 들어 있는 XML DOM에 대한 참조를 반환합니다. XML DOM에 대한 참조가 있으면 해당 속성이나 메서드를 사용하여 포함된 데이터를 조작할 수 있습니다.

DataAdaptersCollection 및 DataAdapterObject 인터페이스 사용

DataAdaptersCollection 인터페이스는 XDocument 인터페이스의 DataAdapters 속성을 통해 액세스합니다. 예를 들어 Northwind Traders Microsoft Access 데이터베이스의 Employees 테이블에서 데이터를 검색하는 Employees라는 보조 데이터 원본을 만드는 경우 DataAdapterObjects 컬렉션을 사용하여 데이터베이스와의 연결을 나타내는 DataAdapterObject에 대한 참조를 설정할 수 있습니다.

다음 코드 예제에서는 이 경우에 Northwind Microsoft Access 데이터베이스와의 연결을 나타내는 ADOAdapterObject의 인터페이스에 대한 참조를 반환하는 DataAdaptersCollection의 접근자 속성에 보조 데이터 원본 이름이 전달됩니다. 이 코드가 제대로 작동하기 위해서는 ADOAdapterObject로 반환되는 개체를 명시적으로 캐스팅해야 합니다. ADOAdapterObject 인터페이스의 Connection 속성은 메시지 상자에 ADO 연결 문자열을 표시하는 데 사용됩니다.

public void CTRL1_5_OnClick(DocActionEvent e)
{
   // Instantiate a variable to access the specified data object
   // from the DataAdaptersCollection of the form. 
   // You must explicitly cast to the specific adapter type
   // (ADOAdapterObject) before you can access the data adapter.
   ADOAdapterObject myADOAdapter = 
      thisXDocument.DataAdapters["Employees"] as ADOAdapterObject;

   // Display the connection information for the data adapter.
   thisXDocument.UI.Alert("Data Adapter: " + myADOAdapter.Connection);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)

   ' Instantiate a variable to access the specified data object. 
   ' You must explicitly cast to the specific adapter type
   ' (ADOAdapterObject) before you can access the data adapter.
   Dim myADOAdapter As ADOAdapterObject = _
      thisXDocument.DataAdapters("Employees")

   ' Display the connection information for the data adapter.
   thisXDocument.UI.Alert("Data Adapter: " + myADOAdapter.Connection)
End Sub