ADO 데이터 원본에 바인딩할 때 InfoPath 양식 쿼리에서 와일드 카드 문자를 사용 하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 826992 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

Microsoft Office InfoPath 바인딩을 Microsoft Access 또는 Microsoft SQL Server에 간단 하 게 있습니다. Infopath는 Microsoft ActiveX 데이터 개체 (ADO)를 사용 하 여 간단 하 고 직접적인 테이블 쿼리를 SQL 데이터베이스 또는 Access 데이터베이스를 자동으로 생성할 수 있습니다. 그러면 Infopath는 쿼리 결과를를 표시 하 고 폼을 편집할 수 있습니다.

고급 쿼리의 경우 InfoPath 여러 프로그래밍 방법을 사용할 수 있는 고급 사용자 또는 개발자에 게 있습니다. 이러한 프로그래밍 메서드는 고급 사용자 또는 개발자가 보다 복잡 한 SQL 구문을 사용 하는 사용자 지정 쿼리를 수행 하는 폼을 만들 수 있습니다. 한 일반적인 사용자 지정 쿼리 예제 부분적으로 지정 된 조건에 맞는 레코드를 찾으려면 와일드 카드 문자를 사용 합니다.

다음 단계를 사용 하 여 Access 테이블 또는 SQL 테이블에 와일드 카드 문자 검색을 수행 하려면 Infopath의 관리 코드를 사용 하는 방법에ADOAdapter개체입니다.

추가 정보

Infopath를 사용 하면 쿼리 데이터 연결으로 캐스팅 된AdoQueryConnection개체입니다. 이 메서드를 검색 하 고 다음 항목에 대 한 정보를 설정할 수 있습니다.
  • 연결 문자열
  • SQL 명령 텍스트
  • 시간 제한 값
사용 하는AdoQueryConnection개체를 와일드 카드 문자를 사용 하는 쿼리 등의 보다 복잡 한 작업을 수행 하는 SQL 문을 변경할 수 있습니다.

이 문서에서는 SQL 데이터베이스와 Access 데이터베이스에 적용 됩니다. 다음 예제에서는 Microsoft Office Access 2007과 Microsoft Office Access 2010 포함 된 Northwind 데이터베이스를 사용 합니다.

데이터베이스 만들기

Northwind 샘플 데이터베이스를 버전의 Infopath에서 아직 사용할 경우 로컬 데이터베이스를 만듭니다. 이렇게 하려면 다음과 같이 하십시오.

  1. Microsoft Office Access를 시작 합니다.
  2. 사용 가능한 서식 파일select 절예제 서식 파일.
  3. 선택은Northwind데이터베이스 및 클릭만들기.

데이터베이스를 쿼리 하는 양식 디자인

이 섹션에서는 Infopath에서 쿼리 양식을 디자인 하는 방법을 설명 합니다. Suppliers 테이블에서 Northwind 데이터베이스를 추가 하는 예제입니다. 이 테이블에 쿼리 양식을 작성 하려면 Infopath의 버전을 제공 하는 단계를 따릅니다.

InfoPath 2010

양식 서식 파일을 만들고 양식 서식 파일 코드 언어 C#으로 설정 합니다. 이렇게 하려면 다음과 같이 하십시오.
  1. InfoPath 디자이너 2010을 시작 합니다.
  2. 고급 양식 서식 파일select 절데이터베이스를 클릭 하 고 다음을 클릭양식 디자인입니다.
  3. 데이터 연결 마법사를 클릭 합니다.데이터베이스를 선택 합니다..
  4. Northwind 데이터베이스를 저장 한 폴더를 찾아, 파일 northwind.accdb를 선택한 다음열기.
  5. 테이블을 선택 합니다.창에서 목록의 맨 아래로 스크롤하여 선택의공급 업체테이블을 클릭 하 고확인 합니다.
  6. 다음 필드에서 선택 되어 있는지 확인 하십시오 있는공급 업체테이블:
    • ID
    • 회사
    • Last_Name
    • Job_Title
    • Business_Phone
  7. 클릭다음.
  8. 클릭마침데이터 연결 마법사를 완료.
  9. 필드창에서 확장을데이터 필드노드 및 다음 끌어서 추가d:Suppliers노드 아래의 상자에 해당쿼리를 실행 합니다.단추입니다.
  10. 메시지가 나타나면 선택 합니다.반복 표.
  11. 필드창에서 확장을queryFields노드 및 다음 끌어서 추가q: 공급 업체노드 아래의 상자에 해당새 레코드단추입니다. (이 자동으로 컨트롤이 있는 구역을 추가 합니다.)
  12. 아래는개발자탭에서 클릭언어.
  13. 프로그래밍 언어아래 섹션양식 서식 파일 코드 언어선택C#를 클릭 하 고 다음을 클릭확인.

InfoPath 2007

양식 서식 파일을 만듭니다. 이렇게 하려면 다음과 같이 하십시오.
  1. InfoPath 2007을 시작 합니다.
  2. 탐색 창에서 해당양식을 작성대화 상자 클릭양식 서식 파일 디자인.
  3. 양식 서식 파일 디자인창에서 클릭빈,다음을 클릭 하 고확인.
  4. 도구메뉴를 클릭데이터 연결를 클릭 하 고 다음을 클릭추가. 는데이터 연결창이 열립니다.
  5. 데이터 연결창에서 클릭 합니다 선택은새 연결을 만듭니다확인란을 클릭 하십시오 선택은데이터를 수신 합니다.확인란을 선택한 다음 클릭다음.
  6. 선택 하는데이터베이스 (Microsoft SQL Server 또는 Microsoft Office Access만)확인란을 선택한 다음 클릭다음.
  7. 클릭데이터베이스를 선택 합니다..
  8. Northwind 데이터베이스를 저장 한 폴더를 찾아, 폴더를 선택한 다음열기.
  9. 테이블을 선택 합니다.대화 상자에서 목록의 맨 아래로 스크롤하여 선택의공급 업체테이블을 클릭 하 고확인.
  10. 데이터 원본 구조목록에서 다음 열 머리글만 선택 되었는지 확인 합니다.
    • ID
    • 회사
    • Last_Name
    • Job_Title
    • Business_Phone
  11. 클릭다음.
  12. 클릭데이터 보기 먼저 디자인을 누른 다음 클릭마침데이터 원본 설치 마법사를 종료 하 고 빌드하려면 기본 폼입니다.
  13. 데이터 원본작업 창에서 두 번 클릭데이터 필드.
  14. 이동은d:Suppliers노드에데이터보기 형태입니다.
  15. 메시지가 나타나면 추가d:Suppliers다른 이름으로 는반복 표.
  16. 보기메뉴를 클릭관리 보기.
  17. 보기작업 창에서 클릭을쿼리보기입니다.
  18. 도구메뉴를 클릭양식 옵션.
  19. 범주목록에서 클릭프로그래밍.
  20. 양식 서식 파일 코드 언어상자에서 클릭C#를 클릭 하 고 다음을 클릭확인.

사용자 지정 쿼리를 실행 하는 양식 변경

이 섹션에서는 검색 문자열과 유사 하지만 문자열 정확히 일치 하지 않는 값을 가진 레코드 찾기 방법에 설명 합니다. 유사한 값이 있는 레코드를 검색 하려면 와일드 카드 문자 문자열 사용 하 여다음과 같이SQL 쿼리 문입니다. 와일드 카드 문자 문자열 때와다음과 같이문을 함께 사용, 와일드 카드 문자 검색 기준을 기반으로 레코드를 찾을 수 있습니다. 이러한 레코드는 다음 Infopath로 반환 됩니다.

사용자 지정 쿼리를 실행 하는 양식을 변경 해야 하는직함InfoPath 2010 또는 InfoPath 2007을 필드에 다음과 같이 하십시오.

  1. 디자인 모드에서 마우스의쿼리를 실행 합니다.단추를 클릭 하 고단추 속성.
  2. 다음과 같이 변경을 합니다.
    • 변경의동작단추에의규칙 및 사용자 지정 코드
    • 변경의레이블쿼리를 실행 합니다.
    • 변경의IDbtnQuery
  3. 클릭 하 여양식 코드 편집단추를 사용 하 여 변경 내용을 적용 하 고 Visual Studio 도구 응용 프로그램 편집기를 시작 합니다. BtnQuery "Clicked" 이벤트 처리기를 엽니다.
  4. 주석 바꾸기 "/ / 여기에 코드를 쓰기" 다음 코드를:
    //Create an XPathNavigator object for the main data source
    XPathNavigator xnMain = this.MainDataSource.CreateNavigator();
     
    //Create an AdoQueryConnection from the main data source by "casting" the default
    //data connection to an "AdoQueryConnection"
    AdoQueryConnection cn = (AdoQueryConnection)this.DataConnections["Main connection"];
     
    //Obtain the default SQL command for the form.
    string strOrigSQLCommand = cn.Command.ToString();
     
     
     
    // Obtain the query node that you want to change.
    XPathNavigator xnSuppliersQuery = xnMain.SelectSingleNode("/dfs:myFields/dfs:queryFields/q:Suppliers", this.NamespaceManager);
     
    //Obtain the text that was entered for the wildcard character search, and then clear the current query parameter so that InfoPath will leave the current query parameter blank.
    string strJobTitle = xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(string.Empty);
     
    //Have InfoPath construct an SQL command that is based on all other field values.
    string strMySQLCommand = cn.BuildSqlFromXmlNodes(xnSuppliersQuery);
     
    //Save the other query items, and then clear the other query items before the next query.
    string strSupplierID = xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(string.Empty);
    string strCompany = xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(string.Empty);
    string strLastName = xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(string.Empty);
    string strFirstName = xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(string.Empty);
    string strBusPhone = xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(string.Empty);
     
    //Add Job_Title to the query so that Job_Title can support wildcard characters.
    if (strJobTitle != string.Empty)
    {
           if (strMySQLCommand != string.Empty)
                  strMySQLCommand += " AND ";
     
           //Check whether the user entered the wildcard character (%) as part of the title.
    if(strJobTitle.Contains("%"))
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "'";
           else
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "%'";               
    }
     
    //Construct the full query string.
    string strSQLQuery = strOrigSQLCommand;
    if (strMySQLCommand != string.Empty)
    strSQLQuery += " WHERE " + strMySQLCommand;
     
    //Set the command and run the query.
    cn.Command = strSQLQuery;
    cn.Execute();
     
    //Restore all the user entries to the Query fields so that the user entries will 
    //be available if you want to change and to rerun the query.
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(strSupplierID);
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(strCompany);
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(strLastName);
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(strFirstName);
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(strJobTitle);
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(strBusPhone);
     
    //Restore the default table command (for the next time).
    cn.Command = strOrigSQLCommand;
     
    //Clean up
    xnMain = null;
    cn = null;
    xnSuppliersQuery = null;
  5. 클릭 하 여 프로젝트를 빌드하는빌드메뉴 항목 및 다음 클릭빌드프로젝트 이름.
  6. 변경 내용을 저장 한 다음 Infopath로 돌아갑니다.

코드 테스트

이전 절차에서 제공 되는 샘플 코드에 와일드 카드 문자 검색을 수행할 수 있는직함필드에공급 업체테이블입니다. 같은 검색 쿼리를 제공 하 여판매 %마법 반환 된 모든 레코드가 Sales 근무처에 연락처가 있습니다. 해당 레코드의 검색 기준과 일치 하기만 하면 이러한 연락처는 대표, 관리자 또는 에이전트가 될 수 있습니다.판매 %. "판매" 하지 않는 연락처직함필드를 필터링 합니다.


반환 된 모든 레코드가 Sales 근무처에 연락처 있는지 확인 하려면 다음과 같이 하십시오.
  1. InfoPath 2010에 대 한:리본 메뉴에 탭, 클릭미리 보기.
    InfoPath 2007 용:도구 모음을 클릭 합니다.미리 보기를 클릭 하 고 다음을 클릭양식.
  2. 직함쿼리 필드 형식판매 %.
  3. 클릭쿼리를 실행 합니다.

사용자 지정 쿼리에 의해 반환 된 레코드는 Sales 근무처의 모든 연락처입니다.

속성

기술 자료: 826992 - 마지막 검토: 2011년 2월 7일 월요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
키워드:?
kbhowto kbmt KB826992 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:826992

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com