연습: 문서 수준 프로젝트의 복합 데이터 바인딩
이 연습에서는 문서 수준 프로젝트의 복합 데이터 바인딩에 대한 기본적인 사항을 보여 줍니다. Microsoft Office Excel 워크시트의 여러 셀을 Northwind SQL Server 데이터베이스의 필드에 바인딩할 수 있습니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
이 연습에서는 다음 작업을 수행합니다.
통합 문서 프로젝트에 데이터 추가
워크시트에 데이터 바인딩된 컨트롤 추가
데이터 변경 내용을 데이터베이스에 다시 저장
참고
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
-
Microsoft Office 개발자 도구를 포함하는 Visual Studio 2010 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.100\).md)을 참조하십시오.
Excel 2007 또는 Excel 2010
Northwind SQL Server 샘플 데이터베이스가 있는 서버에 액세스할 수 있어야 합니다.
SQL Server 데이터베이스에서 읽고 쓰기 위한 권한이 있어야 합니다.
새 프로젝트 만들기
첫 번째 단계는 Excel 통합 문서 프로젝트 만들기입니다.
새 프로젝트를 만들려면
My Complex Data Binding이라는 이름의 Excel 통합 문서 프로젝트를 만듭니다. 마법사에서 새 문서 만들기를 선택합니다.
자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
Visual Studio의 디자이너에 새 Excel 통합 문서가 열리고 My Complex Data Binding 프로젝트가 솔루션 탐색기에 추가됩니다.
데이터 소스 만들기
데이터 소스 창을 사용하여 형식화된 데이터 집합을 프로젝트에 추가합니다.
데이터 소스를 만들려면
데이터 소스 창이 표시되지 않으면 데이터 메뉴에서 데이터 소스 표시를 클릭합니다.
참고
데이터 소스 표시를 사용할 수 없으면 Excel 통합 문서 안쪽을 클릭한 다음 다시 확인합니다.
새 데이터 소스 추가를 클릭하여 데이터 소스 구성 마법사를 시작합니다.
데이터베이스를 선택하고 다음을 클릭합니다.
Northwind 샘플 SQL Server 데이터베이스에 대한 데이터 연결을 선택하거나 새 연결 단추를 사용하여 새 연결을 추가합니다.
연결을 선택하거나 만든 후 다음을 클릭합니다.
연결을 저장하는 옵션이 선택되어 있는 경우 선택을 취소하고 다음을 클릭합니다.
데이터베이스 개체 창에서 테이블 노드를 확장합니다.
Employees 테이블 옆에 있는 확인란을 선택합니다.
마침을 클릭합니다.
마법사에서 Employees 테이블이 데이터 소스 창에 추가됩니다. 솔루션 탐색기에 표시되는 프로젝트에 형식화된 데이터 집합도 추가됩니다.
워크시트에 컨트롤 추가
통합 문서가 열리면 워크시트에 Employees 테이블이 표시됩니다. 사용자는 데이터를 변경하고 단추를 클릭하여 해당 변경 내용을 다시 데이터베이스에 다시 저장할 수 있습니다.
워크시트를 테이블에 자동으로 바인딩하려면 데이터 소스 창에서 워크시트에 ListObject 컨트롤을 추가합니다. 사용자가 변경 내용을 저장할 수 있도록 하려면 도구 상자의 Button 컨트롤을 추가합니다.
목록 개체를 추가하려면
My Complex Data Binding.xls 통합 문서가 Visual Studio 디자이너에 열려 있고 Sheet1이 표시되어 있는지 확인합니다.
데이터 소스 창을 열고 Employees 노드를 선택합니다.
드롭다운 화살표가 나타나면 이 화살표를 클릭합니다.
드롭다운 목록에서 ListObject를 선택합니다.
Employees 테이블을 A6 셀에 끌어 놓습니다.
EmployeesListObject라는 ListObject 컨트롤이 셀 A6에 작성됩니다. 이와 함께 EmployeesBindingSource라는 BindingSource, 테이블 어댑터 및 DataSet 인스턴스가 프로젝트에 추가됩니다. 컨트롤이 BindingSource에 바인딩되고, 이는 다시 DataSet 인스턴스에 바인딩됩니다.
단추를 추가하려면
- 도구 상자의 공용 컨트롤 탭에서 Button 컨트롤을 워크시트의 셀 A4에 추가합니다.
다음 단계에서는 워크시트가 열릴 때 단추에 텍스트를 추가합니다.
컨트롤 초기화
Startup 이벤트 처리기에서 단추에 텍스트를 추가합니다.
컨트롤을 초기화하려면
솔루션 탐색기에서 마우스 오른쪽 단추로 Sheet1.vb 또는 Sheet1.cs를 클릭한 다음 바로 가기 메뉴에서 코드 보기를 클릭합니다.
Sheet1_Startup 메서드에 다음 코드를 추가하여 button의 텍스트를 설정합니다.
Me.Button1.Text = "Save"
this.button1.Text = "Save";
C#의 경우에만 Click 이벤트에 대한 이벤트 처리기를 Sheet1_Startup 메서드에 추가합니다.
this.button1.Click += new EventHandler(button1_Click);
이제 단추의 Click 이벤트를 처리할 코드를 추가합니다.
데이터베이스에 변경 내용 저장
데이터에 대한 모든 변경 내용은 이를 데이터베이스에 다시 명시적으로 저장하지 않는 한 로컬 데이터 집합에만 적용됩니다.
데이터베이스에 변경 내용을 저장하려면
button의 Click 이벤트에 대한 이벤트 처리기를 추가하고 다음 코드를 추가하여 데이터 집합의 모든 변경 내용을 데이터베이스에 다시 커밋할 수 있도록 합니다.
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Button1.Click Try Me.EmployeesTableAdapter.Update(Me.NorthwindDataSet.Employees) Catch ex As System.Data.DataException MessageBox.Show(ex.Message) End Try End Sub
private void button1_Click(object sender, EventArgs e) { try { this.employeesTableAdapter.Update(this.northwindDataSet.Employees); } catch (System.Data.DataException ex) { MessageBox.Show(ex.Message); } }
응용 프로그램 테스트
이제 통합 문서를 테스트하여 데이터가 예상대로 표시되는지 확인하고 목록 개체에서 데이터를 조작 가능한지 확인할 수 있습니다.
데이터 바인딩을 테스트하려면
F5 키를 누릅니다.
통합 문서를 열 때 Employees 테이블의 데이터로 목록 개체가 채워지는지 확인합니다.
데이터를 수정하려면
셀 B7을 클릭합니다. 이 셀에는 Davolio라는 이름이 들어 있어야 합니다.
Anderson이라는 이름을 입력한 다음 Enter 키를 누릅니다.
열 머리글을 수정하려면
LastName이라는 열 머리글이 들어 있는 셀을 클릭합니다.
두 단어 사이에 공백을 추가하여 Last Name을 입력한 다음 Enter 키를 누릅니다.
데이터를 저장하려면
워크시트에서 저장을 클릭합니다.
Excel을 종료합니다. 변경 내용을 저장할지 묻는 메시지가 나타나면 아니요를 클릭합니다.
F5 키를 눌러 프로젝트를 다시 실행합니다.
목록 개체가 Employees 테이블의 데이터로 채워집니다.
셀 B7의 이름이 여전히 Anderson인 것을 확인할 수 있습니다. 이 이름은 이전에 변경하여 데이터베이스에 다시 저장한 데이터입니다. 열 머리글은 단어 사이에 공백이 없는 원래 형태인 LastName으로 다시 변경되었습니다. 열 머리글은 데이터베이스에 바인딩되어 있지 않고 워크시트에 대한 변경 내용을 저장하지 않았기 때문입니다.
새 행을 추가하려면
목록 개체 안의 셀을 선택합니다.
목록 아래쪽에 새 행이 나타나고 새 행의 첫 번째 셀에 별표(*)가 표시됩니다.
빈 행에 다음 정보를 입력합니다.
EmployeeID
LastName
FirstName
제목
10
Ito
Shu
Sales Manager
행을 삭제하려면
- 워크시트의 가장 왼쪽에 있는 번호 16(16행)을 마우스 오른쪽 단추로 클릭하고 삭제를 클릭합니다.
목록의 행을 정렬하려면
목록 안의 셀을 선택합니다.
각 열 머리글에 화살표 단추가 나타납니다.
Last Name 열 머리글의 화살표 단추를 클릭합니다.
오름차순 정렬을 클릭합니다.
각 행이 성을 기준으로 알파벳 순서에 따라 정렬됩니다.
정보를 필터링하려면
목록 안의 셀을 선택합니다.
Title 열 머리글의 화살표 단추를 클릭합니다.
Sales Representative를 클릭합니다.
Title 열에 Sales Representative가 있는 행만 목록에 표시됩니다.
Title 열 머리글의 화살표 단추를 다시 클릭합니다.
**(모두)**를 클릭합니다.
필터링이 제거되고 모든 행이 나타납니다.
다음 단계
이 연습에서는 데이터베이스의 테이블을 목록 개체에 바인딩하는 기본적인 방법을 보여 줍니다. 이후에 수행할 수 있는 작업은 다음과 같습니다.
오프라인으로 사용할 수 있도록 데이터를 캐시합니다. 자세한 내용은 방법: 오프라인이나 서버에서 사용할 데이터 캐싱을 참조하십시오.
솔루션을 배포합니다. 자세한 내용은 Office 솔루션 배포를 참조하십시오.
필드와 테이블 사이에 마스터/세부 항목 관계를 만듭니다. 자세한 내용은 연습: 캐시된 데이터 집합을 사용하여 마스터-세부 관계 만들기를 참조하십시오.