다음을 통해 공유


방법: 오프라인 솔루션 사용

InfoPath 개체 모델은 양식 코드에서 사용자의 컴퓨터가 네트워크에 연결되어 있는지 여부를 확인할 수 있는 Application 클래스의 MachineOnlineState 속성을 제공합니다. 양식 코드는 MachineOnlineState 속성 값을 확인하여 연결 상태에 따라 다른 작업을 수행할 수 있습니다.

MachineOnlineState 속성 사용

다음 예제에서는 양식 코드에 사용자 컴퓨터가 온라인인지 오프라인인지에 따라 양식 전송 방법을 결정하는 논리를 추가할 수 있는 방법을 보여 줍니다.

이 예제에서는 판매 월과 연도를 지정하는 period라는 필드가 있는 판매 보고서를 전송하는 양식을 만들었다고 가정합니다. 그리고 사용자가 이미 데이터 연결 및 온라인 상태에서 보고서를 전송하는 논리를 정의했다고 가정합니다.

양식을 전자 메일 메시지에 첨부하여 전송하는 데이터 연결 추가

  1. InfoPath 관리 코드 양식 서식 파일을 만듭니다.

  2. InfoPath 디자인 모드에서 도구 메뉴의 데이터 연결을 클릭합니다.

  3. 데이터 연결 대화 상자에서 추가를 클릭합니다.

  4. 데이터 연결 마법사에서 데이터 전송을 클릭한 후 다음을 클릭합니다.

  5. 마법사의 다음 페이지에서 전자 메일 메시지로를 클릭한 후 다음을 클릭합니다.

  6. 마법사의 다음 페이지에서 받는 사람란에 사용자의 전자 메일 주소를 입력합니다.

  7. 제목란에서 다음을 수행하여 판매 보고서라는 텍스트와 판매 기간을 결합합니다.

    1. 제목란 옆에 있는 수식 단추를 클릭합니다.

    2. 수식 삽입 대화 상자에서 함수 삽입을 클릭합니다.

    3. 함수 삽입 대화 상자에서 범주 목록의 텍스트를 클릭한 다음 함수 목록에서 concat를 두 번 클릭합니다.

    4. 필드를 삽입하려면 두 번 클릭하십시오의 첫 번째 인스턴스를 '판매 보고서: '(따옴표 포함)로 바꿉니다.

    5. 필드를 삽입하려면 두 번 클릭하십시오의 두 번째 인스턴스를 두 번 클릭합니다.

    6. 필드 또는 그룹 선택 대화 상자에서 period 필드를 선택합니다.

    7. 필드를 삽입하려면 두 번 클릭하십시오의 마지막 인스턴스를 삭제하고 확인을 클릭합니다.

  8. 마법사에서 다음을 클릭합니다.

  9. 마법사의 다음 페이지에서 첨부 파일 이름 옆의 수식 단추를 클릭하고 위의 단계를 반복하여 concat("Sales Report - ", period) 수식을 만든 후 다음을 클릭합니다.

  10. 마법사의 마지막 페이지에서 이 데이터 연결의 이름 입력란에 전자 메일 전송을 입력한 다음 마침을 클릭합니다.

사용자의 컴퓨터 연결 상태에 따라 양식을 전송하는 논리 추가

  1. InfoPath 디자인 모드에서 도구 메뉴의 전송 옵션을 클릭합니다.

  2. 전송 옵션 대화 상자에서 이 양식을 전송하도록 허용을 클릭하고 양식 코드를 사용한 사용자 지정 전송을 선택한 다음 코드 편집을 클릭합니다.

  3. Submit 이벤트 처리기 아래에 다음 두 함수를 추가합니다.

    public void OnlineSubmit(SubmitEventArgs e)
    {
       // Logic for submitting online goes here.
    }
    
    public void OfflineSubmit(SubmitEventArgs e)
    {
       // Access and submit to the e-mail connection.
       DataConnectionCollection myDataConnections =
          this.DataConnections;
       EmailSubmitConnection submitConnection =
          (EmailSubmitConnection)myDataConnections["E-mail Submit"];
       submitConnection.Execute();
    
       // Notify the user that the form was submitted offline.
       System.Text.StringBuilder myMessage = 
          new System.Text.StringBuilder();
       myMessage.Append("You submitted your Sales Report offline. ");
       myMessage.Append("Your Sales Report is in your outbox ");
       myMessage.Append("and will be submitted when you connect to ");
       myMessage.Append("the network.");
        MessageBox.Show(myMessage.ToString());
    
       // The submission was successful.
       e.CancelableArgs.Cancel = false;
    }
    
    Public Sub OnlineSubmit(ByVal e As SubmitEventArgs)
       ' Logic for submitting online goes here.
    End Sub
    
    Public Sub OfflineSubmit(ByVal e As SubmitEventArgs)
       ' Access and submit to the e-mail connection.
       Dim myDataConnections As DataConnectionCollection = _
          Me.DataConnections
       Dim submitConnection As EmailSubmitConnection = _
          DirectCast(myDataConnections("E-mail Submit"), _
          EmailSubmitConnection)
       submitConnection.Execute
    
       ' Notify the user that the form was submitted offline.
       Dim myMessage As System.Text.StringBuilder = _
          New System.Text.StringBuilder()
       myMessage.Append("You submitted your Sales Report offline. ")
       myMessage.Append("Your Sales Report is in your outbox ")
       myMessage.Append("and will be submitted when you connect to ")
       myMessage.Append("the network.")
        MessageBox.Show(myMessage.ToString())
    
       ' The submission was successful.
       e.CancelableArgs.Cancel = False
    End Sub
    
  4. 다음 if 문을 FormEvents_Submit 이벤트 처리기 함수에 추가합니다.

    // Check the computer's connection state.
    if (this.Application.MachineOnlineState == MachineState.Online)
    {
       OnlineSubmit(e);
    }
    else
    {
       OfflineSubmit(e);
    }
    
    ' Check the computer's connection state.
    If (Me.Application.MachineOnlineState = MachineState.Online) Then
       OnlineSubmit(e)
    Else
    {
       OfflineSubmit(e)
    End If
    

코드 테스트

  1. 디버그 메뉴에서 디버깅 시작을 클릭합니다.

  2. 양식에 내용을 기록합니다.

  3. Microsoft Internet Explorer를 시작합니다.

  4. Internet Explorer에서 파일 메뉴의 오프라인으로 작업을 클릭합니다.

  5. InfoPath에서 전송을 클릭합니다. 양식이 전자 메일 메시지로 전송될 것이라는 메시지가 표시됩니다.

  6. 보내기를 클릭합니다. 양식이 오프라인으로 전송되었으며 네트워크에 연결할 때 전송된다는 메시지가 표시됩니다.