InfoPath에서는 마스터/세부 관계를 테이블 모두 삭제 스크립트 사용 방법

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

소개

이 문서에서는 Microsoft Office InfoPath에서는 마스터/세부 관계를 가진 테이블에서 계단식 삭제를 위한 스크립트를 사용하는 방법에 대해 설명합니다. 이 코드는 마스터 항목을 삭제할 때 키 필드를 사용하여 마스터 항목에 연결된 세부 항목을 삭제할 수 있습니다.

추가 정보

Microsoft는 묵시적인 보증 없이 목적으로만 프로그래밍 예제를 제공합니다. 이 포함되지만, 상품성 또는 특정 목적에의 적합성에 대한 묵시적인된 보증이 제한되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다. 마스터 항목이 삭제될 때 관련된 세부 항목이 삭제된 마스터/세부 관계를 테이블을 만들려면 다음과 같이 하십시오.
  1. InfoPath를 시작하고 새 양식을 엽니다. 이렇게 하려면 다음과 같이 하십시오.

    InfoPath 2007
    1. 양식 채우기 대화 상자의 왼쪽된 창에서 양식 서식 파일 디자인 을 클릭하십시오.
    2. 양식 서식 파일 창이 디자인, 공백 을 클릭한 다음 확인 을 누릅니다.
    InfoPath 2003
    1. 양식 채우기 대화 상자의 왼쪽된 창에서 양식 디자인 을 클릭하십시오.
    2. 오른쪽 창에서 새 양식 을 클릭하십시오.
  2. 두 개의 반복 표를 삽입하십시오. 이렇게 하려면 다음과 같이 하십시오.

    InfoPath 2007
    1. 삽입 메뉴에서 반복 표 를 클릭하십시오.
    2. 열 수를 2 설정하고 확인 을 클릭하십시오.
    3. 반복 단계 사용자 및 다른 반복 표를 삽입할 b 단계.
    InfoPath 2003
    1. 삽입 메뉴에서 기타 컨트롤 을 클릭하십시오.
    2. 컨트롤 삽입 에서 컨트롤 작업창에서 반복 표 를 클릭하십시오.
    3. 열 수를 2 설정하고 확인 을 클릭하십시오.
    4. b 단계를 반복하고 다른 반복 표를 삽입할 c 단계.
  3. 두 개 이상의 반복 표 만들기 및 처음 두 개의 반복 표 같은 데이터를 두 개의 새 테이블을 바인딩할. 이렇게 하려면 다음과 같이 하십시오.
    1. 보기 메뉴에서 데이터 원본 을 클릭하십시오.
    2. 데이터 원본 작업창에서 group1을 확장하십시오.
    3. group2, 마우스 오른쪽 단추로 클릭한 다음 반복 표 를 클릭하십시오.
    4. 데이터 원본 작업창에서 group3을 확장하십시오.
    5. group4, 마우스 오른쪽 단추로 클릭한 다음 반복 표 를 클릭하십시오.
  4. 3단계에서 만든 두 테이블 간의 마스터/세부 관계를 만듭니다. 이렇게 하려면 다음과 같이 하십시오.
    1. 첫 번째 표를 마우스 오른쪽 단추로 클릭한 다음 반복 표 속성 을 클릭하십시오.

      참고 이 테이블은 폼 맨 위에서 세 번째 테이블입니다.
    2. 반복 표 속성 대화 상자에서 마스터/세부 탭을 클릭하십시오.
    3. 마스터/세부 설정마스터로 설정 을 클릭하십시오.
    4. 마스터 ID 상자에 Master1 을 입력한 다음 확인 을 누릅니다.
    5. 다음 표를 마우스 오른쪽 단추로 클릭한 다음 반복 표 속성 을 클릭하십시오.

      참고 양식 맨 네 번째 테이블에서가 테이블입니다.
    6. 반복 표 속성 대화 상자에서 마스터/세부 탭을 클릭하십시오.
    7. 마스터/세부 설정세부로 설정 을 클릭하십시오.
    8. 마스터 ID에 연결 상자에서 Master1을 선택하십시오.
    9. 링크 마스터 및 세부 에서 키 필드 기준 을 클릭하십시오.
    10. 키 필드(마스터) 상자 오른쪽에 있는 XPath 아이콘을 클릭한 다음 field1 을 클릭하십시오.
    11. 키 필드(세부) 상자 오른쪽에 있는 XPath 아이콘을 field3 를 차례로 클릭한 다음 확인 을 누릅니다.
  5. 세부 정보 테이블에서 키 필드의 OnAfterChange 이벤트 모두 삭제 강제로 코드를 삽입하십시오. 이렇게 하려면 다음과 같이 하십시오.

    InfoPath 2007
    1. 데이터 원본 작업창에서 field1group2 에서 마우스 오른쪽 단추로, 프로그래밍 클릭한 다음 On After Change 이벤트 를 클릭하십시오.
    2. 스크립트 편집 창에 다음 코드를 추가하십시오.

      참고 필드 자리 표시자 및 그룹 자리 표시자를 그룹과 사용할 수 있는 필드 이름으로 바꿀. 함수 msoxd_my_field1::OnAfterChange(eventObj)
      function msoxd_my_field1::OnAfterChange(eventObj)
      {
       // Write code here to restore the global state.
       
       if (eventObj.IsUndoRedo)
       {
        // An undo operation or a redo operation has occurred, and the DOM is read-only.
        return;
       }
       
       //Delete corresponding details if a delete operation has occurred on source group2.
       if(eventObj.Operation == "Delete" && eventObj.Source.nodeName == "my:group2")
       {
        //Block the view update feature to improve performance.
        thisXDocument.View.DisableAutoUpdate();
        
        //Obtain the  value of the keyfield of that row that you want to delete (set as field1 in Designer).
        var nodeKeyFieldMaster = eventObj.Source.selectSingleNode("my:field1");
                
        //Set the selection on all nodes in Detail.
        var nodesDetail = XDocument.DOM.selectNodes("/my:myFields/my:group3/my:group4");
       
        //View each row in Detail, and then delete the row if the key field in the detail matches the key field in the master.
        for (i=0; i< nodesDetail.length; i++)
        {
         //Obtain the row.
         var row = nodesDetail.item(i);
         
         //Obtain the  value of the keyfield for the current row  (set as field3 in Designer).
         var nodeKeyFieldDetail = row.selectSingleNode("my:field3");
       
         //Delete the row if the keyfield in the detail matches the keyfield of the deleted row in the master.
         if(nodeKeyFieldDetail.text == nodeKeyFieldMaster.text)
         {
          row.parentNode.removeChild(row); 
         }
      
        //Re-enable the view update.
        thisXDocument.View.EnableAutoUpdate();
      
        }
       } 
      }
      
    3. 파일 메뉴에서 저장 을 클릭하십시오.
    4. 파일 메뉴에서 끝내기 를 누릅니다.
    InfoPath 2003
    1. 데이터 원본 작업창에서 field1group2 에서 마우스 오른쪽 단추로 클릭한 다음 속성 을 클릭하십시오.
    2. 필드 또는 그룹 속성 대화 상자에서 유효성 검사 및 이벤트 처리기 탭을 클릭하십시오.
    3. 이벤트 목록에서 OnAfterChange 를 클릭한 다음 편집 을 클릭하십시오.
    4. 스크립트 편집 창에 다음 코드를 추가하십시오.

      참고 필드 자리 표시자 및 그룹 자리 표시자를 그룹과 사용할 수 있는 필드 이름으로 바꿀. 함수 msoxd_my_field1::OnAfterChange(eventObj)
      function msoxd_my_field1::OnAfterChange(eventObj)
      {
       // Write code here to restore the global state.
       
       if (eventObj.IsUndoRedo)
       {
        // An undo operation or a redo operation has occurred, and the DOM is read-only.
        return;
       }
       
       //Delete corresponding details if a delete operation has occurred on source group2.
       if(eventObj.Operation == "Delete" && eventObj.Source.nodeName == "my:group2")
       {
        //Block the view update feature to improve performance.
        thisXDocument.View.DisableAutoUpdate();
        
        //Obtain the  value of the keyfield of that row that you want to delete (set as field1 in Designer).
        var nodeKeyFieldMaster = eventObj.Source.selectSingleNode("my:field1");
                
        //Set the selection on all nodes in Detail.
        var nodesDetail = XDocument.DOM.selectNodes("/my:myFields/my:group3/my:group4");
       
        //View each row in Detail, and then delete the row if the key field in the detail matches the key field in the master.
        for (i=0; i< nodesDetail.length; i++)
        {
         //Obtain the row.
         var row = nodesDetail.item(i);
         
         //Obtain the  value of the keyfield for the current row  (set as field3 in Designer).
         var nodeKeyFieldDetail = row.selectSingleNode("my:field3");
       
         //Delete the row if the keyfield in the detail matches the keyfield of the deleted row in the master.
         if(nodeKeyFieldDetail.text == nodeKeyFieldMaster.text)
         {
          row.parentNode.removeChild(row); 
         }
      
        //Re-enable the view update.
        thisXDocument.View.EnableAutoUpdate();
      
        }
       } 
      }
      
    5. [파일] 메뉴에서 [편집 창을 닫으려면 끝내기 누릅니다.
    6. 필드 또는 그룹 속성 대화 상자를 닫으려면 확인 을 클릭하십시오.

코드 works.To이 작업을 수행하는 방법을 보여 주는 다음 이 단계를 수행하십시오 양식 미리 보기:
  1. InfoPath 2007

    파일 메뉴에서 미리 보기 를 가리킨 다음 양식 을 클릭하십시오.

    InfoPath 2003

    파일 메뉴에서 양식 미리 보기 가리킨 다음 기본값 을 클릭하십시오.
  2. 폼의 첫 번째 테이블에 일부 테스트 값을 삽입하십시오. 이 테이블은 마스터입니다 테이블. 이렇게 하려면 다음과 같이 하십시오.
    1. 첫 번째 행의 첫 번째 열에 Test1을 입력하십시오.
    2. 첫 번째 행의 두 번째 열에 Master1을 입력하십시오.
    3. 데이터를 지금 입력한 행 아래의 첫 번째 테이블에 새 행을 추가하려면 항목 삽입 을 클릭하십시오.
    4. 두 번째 행의 첫 번째 열에 Test2를 입력하십시오.
    5. 두 번째 행의 두 번째 열에 Master2를 입력하십시오.
    6. 많은 행을 추가할 경우 2e 2 c 단계를 반복하십시오.
  3. 폼의 두 번째 테이블에 일부 테스트 값을 삽입하십시오. 이 테이블은 정보 테이블입니다. 이렇게 하려면 다음과 같이 하십시오.
    1. 첫 번째 행의 첫 번째 열에 Test1을 입력하십시오.
    2. 첫 번째 행의 두 번째 열에 Detail1을 입력하십시오.
    3. 데이터를 지금 입력한 행 아래의 두 번째 테이블에 새 행을 추가하려면 항목 삽입 을 클릭하십시오.
    4. 두 번째 행의 첫 번째 열에 Test2를 입력하십시오.
    5. 두 번째 행의 두 번째 열에 Detail2를 입력하십시오.
    6. 많은 행을 추가할 경우 2e 2 c 단계를 반복하십시오.
  4. 마스터/세부 테이블 테스트하십시오. 한 번에 세 번째 테이블의 각 행을 선택하십시오. 네 번째 표의 첫 번째 열에서 값이 같은 세 번째 테이블에서 선택한 행의 있을 둘째 테이블의 해당 행만 보여 줍니다.
  5. 마스터 행을 삭제할 테이블을. 이렇게 하려면 다음과 같이 하십시오.
    1. 세 번째 테이블에서 첫 번째 열에 "Test2" 들어 있는 두 번째 행을 선택하십시오.
    2. 선택한 행 옆에 있는 화살표를 클릭한 다음 group2 제거 를 클릭하십시오.

      참고 첫 번째 열에서 동일한 텍스트가 있는 행의 네 번째 테이블에서 샘플 코드에 의해 자동으로 삭제됩니다. 예를 들어, "Test2" 삭제됩니다.

속성

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

피드백 보내기

 

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