다음을 통해 공유


Microsoft Access 데이터베이스와 InfoPath 양식 통합

Microsoft InfoPath 2010에서는 Microsoft Access 2010 데이터베이스를 양식의 주 데이터 원본 또는 양식이나 컨트롤의 보조 데이터 원본으로 사용할 수 있습니다. 이 문서에서는 Access 2010 데이터베이스를 데이터 원본으로 사용하는 방법에 대해 설명합니다.

Microsoft Access 데이터베이스를 데이터 원본으로 사용

Microsoft Access 데이터베이스를 양식의 주 데이터 원본으로 설정

InfoPath에서 데이터 연결 마법사를 사용하여 데이터베이스 연결을 설정할 수 있습니다. 이 마법사를 열려면 Microsoft Office Backstage의 새로 만들기 탭에 있는 고급 양식 서식 파일 섹션에서 데이터베이스를 선택한 다음 이 양식 디자인을 클릭합니다.

데이터베이스 선택을 클릭하면 기존 데이터 원본을 선택하거나 특정 데이터베이스 파일에 직접 연결할 수 있습니다.

데이터베이스를 선택한 후에는 데이터베이스에서 양식의 데이터 원본으로 사용할 테이블을 선택하라는 메시지가 표시됩니다. 테이블을 추가하면 테이블 상호 간의 관계가 설정되어 데이터 원본 구조 목록에 테이블과 해당 테이블의 계층 관계가 표시됩니다. 테이블 열 표시 확인란을 선택하면 데이터 원본 구조 목록에 있는 각 테이블의 필드 이름이 표시되며, 각 필드 이름 옆의 확인란을 사용하여 마법사에서 구성하는 SQL 문에 해당 필드가 포함되는지 여부를 지정할 수 있습니다.

참고 사항참고 사항

각 테이블의 기본 키 필드는 항상 선택되어 있으며 제거할 수 없습니다.

데이터 연결 마법사를 사용하여 테이블, 관계 및 필드를 지정한 경우 SQL 편집을 사용하여 양식의 데이터 원본을 설정하는 데 사용될 SQL 문을 확인할 수 있습니다. SQL 편집 대화 상자에서 SQL 문 테스트를 클릭하면 InfoPath가 제공된 정보에서 데이터 원본을 만들 수 있는지 확인할 수 있습니다. 또한 SQL 편집 대화 상자를 사용하면 SQL 문을 수정하여 보다 복잡한 쿼리를 만들 수도 있습니다.

참고 사항참고 사항

InfoPath에서 사용하는 SQL 문은 데이터 셰이핑 쿼리입니다. 데이터 셰이핑 쿼리를 사용하면 하나의 쿼리에 있는 두 개 이상의 논리적 엔터티 사이의 계층 관계를 구축할 수 있습니다. SQL JOIN 문을 사용할 수도 있지만 SQL JOIN 문을 사용하면 양식 전송을 사용할 수 없게 되므로 사용하지 않는 것이 좋습니다. 데이터 셰이핑 쿼리에 대한 자세한 내용은 MSDN(Microsoft Developer Network)의 설명서를 참조하십시오.

데이터 연결 마법사의 마지막 페이지에는 데이터 원본의 이름 및 파일 위치, 기본 상위 테이블의 이름, 사용된 테이블 수, 전송 상태 등 데이터 원본에 대한 요약 정보가 표시됩니다. 전송 상태는 생성된 SQL 문을 통해 데이터가 데이터 원본으로 성공적으로 전송될 수 있는지 여부를 알려 줍니다.

Microsoft Access 데이터베이스를 보조 데이터 원본으로 설정

보조 데이터 원본은 목록 상자 또는 드롭다운 목록 상자의 항목을 제공하는 데 사용할 수 있습니다. 또는 코드를 작성하여 보조 데이터 원본의 데이터를 양식에 추가할 수도 있습니다. 양식에서 보조 데이터 원본을 사용하려면 양식을 디자인할 때 데이터 탭에서 데이터 연결을 클릭합니다.

데이터 연결 마법사를 시작하면 양식에 사용할 데이터를 받을지, 아니면 양식의 데이터를 전송할지를 묻는 메시지가 표시됩니다. 데이터 받기를 선택하고 다음을 클릭합니다. 데이터베이스에서 보조 데이터 원본을 만들려면 **데이터베이스(Microsoft SQL Server 또는 Microsoft Office Access만)**를 선택합니다. 마법사의 다음 페이지에서 데이터베이스 선택을 클릭하여 기존 데이터 원본을 선택하거나 특정 데이터베이스 파일에 직접 연결합니다.

데이터베이스를 선택한 후에는 데이터베이스에서 양식의 데이터 원본으로 사용할 테이블 또는 쿼리를 선택하라는 메시지가 표시됩니다. 우선 하나의 테이블 또는 쿼리를 선택해야 하지만 나중에 원하는 추가 테이블을 선택하여 포함할 수 있습니다. 테이블이나 쿼리를 선택한 후에는 데이터 원본 구조 목록에서 사용할 필드를 선택할 수 있습니다. 기본적으로 테이블의 모든 필드가 선택되어 있지만 양식에 필요하지 않은 경우에는 필드를 제거할 수 있습니다. 또한 테이블에서 반환된 레코드의 정렬 방식과 다중 레코드 허용 여부도 제어할 수 있습니다. 이 작업을 수행하려면 테이블 수정을 클릭한 후 정렬 순서 대화 상자에서 정렬 기준을 최대 3개까지 선택합니다. 설정에 만족하면 마침을 클릭합니다.

참고 사항참고 사항

각 테이블의 기본 키 필드는 항상 선택되어 있으며 제거할 수 없습니다.

InfoPath에서는 동시에 여러 테이블 또는 쿼리에서 데이터를 검색할 수도 있습니다. 여러 테이블 또는 쿼리에서 데이터를 검색하는 경우 데이터 연결 마법사에서 선택한 원래 테이블 또는 쿼리와 관련된 모든 테이블 및 쿼리 간의 관계를 설정할 수 있어야 합니다. 예를 들어 Northwind 데이터베이스의 Customers 테이블에서 데이터를 검색하는 경우 Orders 테이블을 추가하여 해당 고객의 모든 주문에 대한 데이터를 검색하고 Order Details 테이블을 추가하여 각 주문의 세부 정보를 검색할 수 있습니다.

데이터 원본에 테이블을 추가하려면 데이터 원본 구조 목록에서 하위 테이블을 추가할 테이블을 선택한 다음 테이블 추가를 클릭합니다. 추가할 테이블 또는 쿼리를 선택한 후 다음을 클릭합니다. 그러면 사용할 관계를 선택하라는 메시지가 나타납니다. 두 테이블에 이름이 동일한 필드가 있는 경우 InfoPath에서 자동으로 해당 필드를 하나의 관계로 추가하지만, 이름이 동일한 필드가 없거나 사용자 지정 관계를 사용하려는 경우에는 관계 추가를 클릭하여 하위 테이블의 필드에 상응하는 상위 테이블의 필드를 지정할 수 있습니다. 또한 관계 편집 대화 상자의 관계 제거를 클릭하여 기존의 관계를 제거할 수도 있습니다.

설정한 관계에 만족하면 마침을 클릭합니다. 기본 테이블과 마찬가지로, 하위 테이블에서 반환되는 필드를 지정할 수 있습니다. 그러나 테이블 수정 단추를 사용하여 레코드가 반환되는 순서를 편집할 수는 없습니다.

테이블, 관계 및 필드를 지정한 경우 SQL 편집을 클릭하여 양식의 데이터 원본을 설정하는 데 사용될 SQL 쿼리 문을 확인할 수 있습니다. SQL 편집 대화 상자에서 SQL 문 테스트를 클릭하면 InfoPath가 제공된 정보에서 데이터 원본을 만들 수 있는지 확인할 수 있습니다. 또한 SQL 편집 대화 상자를 사용하면 SQL 문을 수정하여 보다 복잡한 쿼리를 만들 수도 있습니다.

참고 사항참고 사항

InfoPath에서 사용하는 SQL 문은 데이터 셰이핑 쿼리입니다. 데이터 셰이핑 쿼리를 사용하면 하나의 쿼리에 있는 두 개 이상의 논리적 엔터티 사이의 계층 관계를 구축할 수 있습니다. SQL JOIN 문을 사용할 수도 있지만 SQL JOIN 문을 사용하면 양식 전송을 사용할 수 없게 되므로 사용하지 않는 것이 좋습니다. 데이터 셰이핑 쿼리에 대한 자세한 내용은 MSDN(Microsoft Developer Network)의 설명서를 참조하십시오.

양식 전송 사용

InfoPath에서는 Access 데이터베이스에서 데이터를 받을 수 있을 뿐 아니라 새 데이터 또는 변경된 데이터를 다시 해당 데이터베이스로 전송할 수도 있습니다. 탭의 전송 명령 또는 Microsoft Office Backstage를 사용하여 변경 내용을 데이터베이스에 전송하면 InfoPath에서는 ADO(ActiveX Data Objects)를 사용하여 데이터베이스의 레코드를 업데이트합니다. 양식 전송은 다음 조건이 모두 충족되는 경우 사용할 수 있습니다.

  • 양식의 쿼리에서 사용되는 모든 열에 대한 기본 열이 있어야 합니다.

  • 전체 쿼리에 한 테이블 열이 여러 번 나타날 수 없습니다.

  • 양식의 쿼리에서 사용되는 SELECT 절의 모든 테이블에 대해 기본 키, 고유 제약 조건 또는 고유 인덱스를 사용할 수 있어야 합니다.

  • 양식의 쿼리에 한 테이블이 여러 번 포함될 수 없습니다.

  • 상위 테이블과 하위 테이블 간의 관계에 상위 테이블의 기본 키 열이 모두 포함되어야 합니다.

  • 양식의 쿼리에서 사용되는 한 SELECT 절의 모든 열에 대해 하나의 기본 테이블만 있을 수 있습니다.

InfoPath에서 양식 변경 내용을 데이터베이스에 전송할 수 없는 몇 가지 상황이 있습니다. 예를 들어 테이블 대신에 쿼리에서 데이터를 가져오는 양식을 만들거나, InfoPath에서 사용하는 SQL 문을 JOIN 문을 포함하도록 사용자 지정하는 경우 변경 내용을 전송할 수 없습니다. 또한 상위 테이블과 다대일 관계를 갖는 양식에 테이블을 추가하는 경우에도 변경 내용이 전송되지 않습니다. InfoPath에서 변경 내용을 데이터베이스에 전송할 수 없는 경우 데이터 연결 마법사 마지막 페이지의 전송 상태 필드에 제한되는 이유가 표시됩니다.