방법: InfoPath 2003 개체 모델을 사용하여 오프라인 솔루션 작업
InfoPath 2003 호환 개체 모델은 양식 코드에서 사용자의 컴퓨터가 네트워크에 연결되어 있는지 여부를 확인할 수 있는 Application 개체의 MachineOnlineState 속성을 제공합니다. 양식 코드는 연결 상태에 따라 다른 작업을 수행할 수 있습니다.
MachineOnlineState 속성 사용
다음 예제에서는 양식 코드에 사용자 컴퓨터가 온라인인지 오프라인인지에 따라 양식 전송 방법을 결정하는 논리를 추가할 수 있는 방법을 보여 줍니다.
이 예제에서는 판매 월과 연도를 지정하는 "period"라는 필드가 있는 판매 보고서를 전송하는 양식을 만들었다고 가정합니다. 그리고 사용자가 이미 데이터 연결 및 온라인 상태에서 보고서를 전송하는 논리를 정의했다고 가정합니다.
양식을 전자 메일 메시지에 첨부하여 전송하는 데이터 연결 추가
InfoPath 관리 코드 양식 서식 파일을 만들거나 엽니다.
InfoPath 디자인 모드에서 데이터 탭의 데이터 연결을 클릭합니다.
데이터 연결 대화 상자에서 추가를 클릭합니다.
데이터 연결 마법사에서 데이터 전송을 클릭한 후 다음을 클릭합니다.
마법사의 다음 페이지에서 전자 메일 메시지로를 클릭한 후 다음을 클릭합니다.
마법사의 다음 페이지에서 받는 사람 상자에 사용자의 전자 메일 주소를 입력합니다.
제목 상자에서 다음을 수행하여 판매 보고서라는 텍스트와 판매 기간을 결합합니다.
제목 상자 옆에 있는 수식 단추를 클릭합니다.
수식 삽입 대화 상자에서 함수 삽입을 클릭합니다.
함수 삽입 대화 상자에서 범주 목록의 텍스트를 클릭한 다음 함수 목록에서 concat를 두 번 클릭합니다.
필드를 삽입하려면 두 번 클릭하십시오의 첫 번째 인스턴스를 '판매 보고서: '(따옴표 포함)로 바꿉니다.
필드를 삽입하려면 두 번 클릭하십시오의 두 번째 인스턴스를 두 번 클릭합니다.
필드 또는 그룹 선택 대화 상자에서 period 필드를 선택합니다.
필드를 삽입하려면 두 번 클릭하십시오의 마지막 인스턴스를 삭제하고 확인을 클릭합니다.
마법사에서 다음을 클릭합니다.
마법사의 다음 페이지에서 이 데이터 연결의 이름 입력 상자에 '전자 메일 전송'을 입력한 다음 마침을 클릭합니다.
사용자의 컴퓨터 연결 상태에 따라 양식을 전송하는 논리 추가
InfoPath 디자인 모드에서 데이터 탭의 전송 옵션을 클릭합니다.
전송 옵션 대화 상자에서 이 양식을 전송하도록 허용을 클릭한 후 코드를 사용하여 사용자 지정 작업 수행을 선택합니다.
코드 편집 단추를 클릭합니다.
OnSubmitRequest 이벤트 처리기 아래에 다음 두 함수를 추가합니다.
public void OnlineSubmit(DocReturnEvent e) { // Logic for submitting online goes here. } public void OfflineSubmitX(DocReturnEvent e) { // Access and submit to the e-mail adapter. DataAdaptersCollection myDataAdapters = thisXDocument.DataAdapters; EmailAdapterObject submitAdapter = (EmailAdapterObject) myDataAdapters["E-mail Submit"]; submitAdapter.Submit(); // Notify the user that the form was submitted offline. System.Text.StringBuilder message = new System.Text.StringBuilder(); message.Append("You submitted your Sales Report offline. "); message.Append("Your Sales Report is in your outbox "); message.Append("and will be submitted when you connect to "); message.Append("the network."); thisXDocument.UI.Alert(message.ToString()); // The submission was successful. e.ReturnStatus = true; }
OnSubmitRequest 이벤트 처리기 함수에 다음 if 문을 추가합니다.
// Check the computer's connection state. if (thisApplication.MachineOnlineState==XdMachineOnlineState.xdOnline) { OnlineSubmit(e); } else { OfflineSubmit(e); }
코드 테스트
InfoPath 디자이너에서 홈 탭의 미리 보기를 클릭합니다.
양식에 내용을 기록합니다.
Microsoft Internet Explorer를 시작합니다.
Internet Explorer에서 파일 메뉴의 오프라인으로 작업을 클릭합니다.
InfoPath에서 전송을 클릭합니다. 양식이 전자 메일 메시지로 전송될 것이라는 메시지가 표시됩니다.
보내기를 클릭합니다. 양식이 오프라인으로 전송되었다는 메시지가 표시됩니다.