방법: 외부 데이터 원본 액세스
InfoPath 양식 서식 파일을 사용하는 경우 코드를 작성하여 양식의 보조 데이터 원본에 액세스하고 여기에 포함된 데이터를 조작할 수 있습니다.
각 보조 데이터 원본은 DataSource 클래스를 사용하여 인스턴스화된 개체로 나타내고, 데이터베이스 또는 웹 서비스 쿼리 같은 외부 데이터 원본에서 가져온 저장된 데이터에 해당합니다. 사용자가 InfoPath 양식을 저장하는 경우 보조 데이터 원본의 데이터가 아니라 기본(또는 주) 데이터 원본의 데이터만 저장되므로 이러한 외부 데이터 원본을 보조 데이터 원본이라고 합니다. 데이터 원본에 대한 연결은 WebServiceConnection 클래스 같이 XML 웹 서비스에 대한 데이터 연결을 나타내는 "데이터 연결" 클래스 중 하나를 사용하여 인스턴스화된 개체로 나타냅니다.
인스턴스화된 DataSource 개체는 데이터베이스나 웹 서비스 쿼리의 데이터 연결에서 반환된 XML 데이터의 저장소를 나타내고 "데이터 연결" 클래스는 데이터 탭의 데이터 연결 명령을 사용하여 정의되고 이름이 지정된 데이터 연결 자체를 나타냅니다.
InfoPath 개체 모델에서는 DataSourceCollection 클래스와 함께 DataSource 클래스를 사용하여 양식의 보조 데이터 원본에 액세스할 수 있습니다.
InfoPath 개체 모델은 양식에서 사용하는 데이터 연결 정보가 포함된 데이터 연결 클래스 집합도 제공합니다.
참고 사항 |
---|
Microsoft InfoPath 2003에서는 데이터 연결을 데이터 어댑터라고 합니다. |
데이터 연결에는 두 가지 종류가 있습니다. 쿼리 연결은 보조 데이터 원본에 저장되는 데이터를 가져오는 데 사용됩니다. 전송 연결은 데이터베이스나 웹 서비스 등에 데이터를 전송하는 데 사용됩니다. 전송한 데이터는 기본 데이터 원본이나 보조 데이터 원본에서 복사됩니다.
DataSourceCollection 클래스 개요
DataSourceCollection 클래스는 양식 개발자가 양식에 포함된 DataSourceCollection 개체 인스턴스를 관리하는 데 사용할 수 있는 다음 속성과 메서드를 제공합니다.
이름 |
설명 |
---|---|
Count 속성 |
컬렉션에 포함된 DataSource 개체 인스턴스의 수를 반환합니다. |
GetEnumerator 메서드 |
컬렉션 전체에서 반복하는 데 사용할 수 있는 IEnumerator를 반환합니다. |
Item[Int32] 속성 |
인덱스 값으로 지정한 DataSource 개체에 대한 참조를 반환합니다. |
Item[String] 속성 |
이름으로 지정한 DataSource 개체에 대한 참조를 반환합니다. |
DataSource 클래스 개요
DataSourceCollection 클래스는 양식 개발자가 InfoPath 보조 데이터 원본과 상호 작용하는 데 사용할 수 있는 다음 메서드와 속성을 제공합니다.
이름 |
설명 |
---|---|
CreateNavigator 메서드 |
데이터 원본에 액세스하여 편집하는 데 사용할 XPathNavigator 개체를 반환합니다. |
관련 데이터 연결 개체에 대한 참조를 가져옵니다. 데이터 연결에 대해 쿼리를 실행하고 XML로 반환된 데이터를 DataSource 개체에 연결된 XML 노드에 삽입하려면 관련 데이터 연결 개체의 Execute 메서드를 사용합니다. |
|
Name 속성 |
DataSource 개체의 이름을 가져옵니다. |
ReadOnly 속성 |
데이터 원본이 읽기 전용 상태인지 여부를 나타내는 값을 가져옵니다. |
기본 데이터 원본에서 nonattribute 노드여야 하는 지정된 XML 노드에 대해 명명된 속성의 값을 가져옵니다. |
|
기본 데이터 원본에서 nonattribute 노드여야 하는 지정한 XML 노드의 명명된 속성 값을 설정합니다. |
DataConnection 클래스 개요
데이터 연결 액세스를 위한 클래스는 외부 데이터 원본에 대한 연결을 통해 데이터를 검색하고 전송하는 여러 속성과 메서드를 제공합니다. DataSource 개체에 연결되는 데이터 연결은 외부 데이터 연결 형식에 따라 달라집니다. InfoPath에서는 데이터 연결 액세스를 위해 다음 클래스를 구현합니다.
이름 |
설명 |
---|---|
ADO/OLEDB 데이터 원본을 쿼리하며, Microsoft Access 및 Microsoft SQL Server로 제한됩니다. |
|
ADO/OLEDB 데이터 원본에 전송하며, Microsoft Access 및 Microsoft SQL Server로 제한됩니다. |
|
SharePoint 목록 또는 문서 라이브러리를 쿼리합니다. |
|
SharePoint 목록 또는 문서 라이브러리에 전송합니다. |
|
XML 웹 서비스에 연결합니다. |
|
XML 파일을 쿼리합니다. |
|
XML 파일에 전송합니다. |
|
전자 메일 첨부 파일로 양식을 전송합니다. |
|
SharePoint Foundation 2010 또는 SharePoint Server 2010을 실행하는 서버의 외부 목록을 쿼리합니다. |
|
SharePoint Foundation 2010 또는 SharePoint Server 2010을 실행하는 서버의 외부 목록에 전송합니다. |
DataSourceCollection 및 DataSource 클래스 사용
양식 서식 파일에 연결된 데이터 원본 컬렉션을 나타내는 DataSourceCollection 개체는 XmlForm 클래스의 DataSources 속성을 통해 액세스합니다. 예를 들어 Northwind 데이터베이스의 Employees 테이블에서 데이터를 검색하는 Employees라는 보조 데이터 원본을 만드는 경우 DataSourceCollection 개체를 사용하여 검색된 데이터를 나타내는 DataSource 개체에 대한 참조를 설정할 수 있습니다.
다음 코드 예제에서는 검색된 Employees 테이블 데이터를 나타내는 DataSource 개체에 대한 참조를 반환하는 DataSourceCollection 클래스의 접근자 속성에 보조 데이터 원본의 이름이 전달됩니다. 보조 데이터 원본에서 검색된 데이터를 저장하는 XML 노드는 DataSource 클래스의 CreateNavigator 메서드로 XPathNavigator 클래스의 InnerXml 속성에 액세스하여 메시지 상자에 표시됩니다.
// 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())
보조 데이터 원본에 들어 있는 데이터를 조작하려면 DataSource 클래스의 CreateNavigator 메서드를 사용하여 보조 데이터가 저장된 노드에 위치한 XPathNavigator 개체에 대한 참조를 반환합니다. XPathNavigator 클래스의 속성이나 메서드를 사용하여 데이터를 조작할 수 있습니다. 자세한 내용은 방법: XPathNavigator 및 XPathNodeIterator 클래스 사용을 참조하십시오.
DataConnectionCollection 및 DataConnection 클래스 사용
양식 서식 파일에 연결된 데이터 연결 컬렉션을 나타내는 DataConnectionCollection 개체는 XmlForm 클래스의 DataConnections 속성을 통해 액세스합니다. 예를 들어 Northwind 데이터베이스의 Employees 테이블에서 데이터를 검색하는 Employees라는 보조 데이터 원본을 만드는 경우 양식 서식 파일에 연결된 DataConnectionCollection 개체를 사용하여 데이터베이스 연결을 나타내는 DataConnection에 대한 참조를 설정할 수 있습니다.
다음 코드 예제에서는 이 경우 Northwind 데이터베이스 연결을 나타내는 DataConnectionCollection 개체에 대한 참조를 반환하는 ADOQueryConnection 클래스의 접근자 속성에 보조 데이터 원본의 이름이 전달됩니다. 이 코드가 제대로 작동하려면 반환되는 개체를 ADOQueryConnection 형식으로 명시적으로 캐스팅해야 합니다. ADOAdapterObject 인터페이스의 Connection 속성은 메시지 상자에 ADO 연결 문자열을 표시하는 데 사용됩니다.
// 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)