DataCombo 및 DataList 컨트롤 사용
DataCombo 및 DataList 컨트롤은 표준 목록 상자 및 콤보 상자 컨트롤과 매우 유사하지만 데이터베이스 응용 프로그램에서 적응력이 뛰어나고 유용하게 만드는 몇 가지 중요한 차이점이 있습니다. 두 컨트롤 모두 이러한 컨트롤이 바인딩된 데이터베이스 필드로 자동으로 채워질 수 있습니다. 또한 선택적으로 선택한 필드를 두 번째 데이터 컨트롤에 전달할 수 있으므로 "조회 테이블" 애플리케이션을 만드는 데 적합합니다.
가능한 사용법
1. 관계형 데이터베이스에서는 한 테이블의 데이터를 사용하여 두 번째 (관련) 테이블에 입력할 값을 제공합니다. 예를 들어, 재고 데이터베이스에서는 공급업체 이름이 테이블에 저장되고 각 공급업체에는 고유한 식별자가 있습니다. 제품을 표시하는 또 다른 테이블에서는 이러한 식별자를 사용하여 제품을 공급하는 공급업체를 나타냅니다. DataList 컨트롤을 사용하면 공급업체의 이름을 표시하는 동시에 제품 테이블에 공급업체의 식별자를 (눈에 보이지 않게) 제공할 수 있습니다.
2. 사용자가 드롭다운 목록에서 기준을 선택하여 검색 범위를 좁힐 수 있습니다. 예를 들어 판매 보고 데이터베이스 응용 프로그램에서는 DataList 컨트롤을 사용하여 사용자가 주나 판매 지역을 선택할 수 있습니다. 일단 선택하면 해당 선택 사항은 선택한 지역의 판매 기록을 찾는 역할을 하는 두 번째 데이터 컨트롤로 자동으로 전달됩니다.
해당 내장 컨트롤과 마찬가지로 DataList 컨트롤과 DataCombo 컨트롤의 주요 차이점은 DataCombo 컨트롤이 콘텐츠를 편집할 수 있는 텍스트 상자를 제공한다는 것입니다.
데이터베이스 테이블을 조인하는 DataList 및 DataCombo 컨트롤의 기능에 대한 설명은 "DataCombo 및 DataList 컨트롤을 사용하여 두 테이블 조인"을 참조하십시오. 연결된 테이블을 사용하는 간단한 데이터베이스 응용 프로그램을 만들려면 "간단한 DataCombo 응용 프로그램 만들기"를 참조하세요.
주목할만한 컨트롤 속성
DataList 및 DataCombo 컨트롤의 몇 가지 중요한 속성은 다음과 같습니다.
DataCombo 컨트롤의 DataFormat 속성은 Extender 속성입니다. 따라서 이는 항상 속성 시트에 표시되며 코드에서 설정할 수 있습니다. 그러나 DataCombo 컨트롤은 해당 목록의 맨 위에 있는 항목의 형식만 지정합니다. 이는 서식이 지정된 최상위 항목을 보고 서식이 지정되지 않은 목록에서 간단히 선택할 수 있는 최종 사용자에게는 덜 중요할 수 있습니다. 서식이 지정된 항목은 최종 사용자가 항목이 데이터베이스에 입력되기 전에 서식이 지정된 것으로 오해할 수도 있습니다. 이러한 이유로 DataCombo 컨트롤을 사용할 때는 DataFormat 속성을 설정하지 않는 것이 좋습니다.
세부 정보 BoundText 속성의 사용을 보여 주는 단계별 자습서 는 "연결된 DataList 컨트롤을 사용하여 DataGrid 만들기"를 참조하세요. 이러한 컨트롤의 속성과 메서드에 대한 전체 목록은 "DataList 컨트롤" 및 "DataCombo 컨트롤"을 참조하세요.
DataCombo 및 DataList 컨트롤을 사용하여 두 테이블 연결
DataCombo 및 DataList 컨트롤의 특징은 서로 다른 두 테이블에 액세스하고 첫 번째 테이블의 데이터를 두 번째 테이블의 필드에 연결할 수 있다는 것입니다. 이는 두 개의 데이터 소스(예: ADOData 컨트롤 또는 데이터 환경)를 사용하여 수행됩니다.
관계형 테이블 및 "친숙하지 않은" 값
관계형 데이터베이스에서는 재사용을 위한 모든 정보가 여러 위치에 저장되지 않습니다. 이 정보의 대부분은 여러 필드로 구성된 레코드 세트에 저장됩니다. 이러한 필드 중에는 레코드 세트를 고유하게 식별하는 "식별자" 필드가 있습니다. 예를 들어, Visual Basic에서 제공하는 Biblio 데이터베이스는 Publishers라는 테이블에 여러 출판사의 이름을 저장합니다. 이 테이블에는 주소, 도시, 우편번호, 전화번호 등 다양한 필드가 포함되어 있습니다. 그러나 단순화를 위해 이 테이블의 두 가지 필수 필드인 Name과 PubID만 고려됩니다. 이름 필드에는 게시자의 이름이 저장되는 반면, PubID 필드에는 숫자나 코드와 같이 상대적으로 "친숙하지 않은" 값이 저장됩니다. 그러나 이 비친화적인 값은 게시자를 고유하게 식별하고 전체 레코드 세트를 연결하는 수단으로 사용되기 때문에 중요합니다. 또한 이 값은 두 번째 테이블의 여러 레코드 집합에 저장됩니다.
두 번째 테이블의 이름은 Titles이며, 각 레코드 세트에는 제목, 출판 연도, 국제표준도서번호(ISBN) 등의 정보가 포함되어 있습니다. 이러한 필드 중 하나의 이름은 PubID입니다. 이 필드의 이름은 출판사 테이블의 해당 필드와 동일합니다. 이 필드는 이 책을 특정 출판사에 연결하는 값을 저장하기 때문입니다.
이 가능한 솔루션은 작은 문제를 제시합니다. 사용자가 새 제목을 삽입할 수 있는 데이터베이스 애플리케이션이 있는 경우 사용자는 출판사를 식별하는 정수를 어떻게든 입력해야 합니다. 사용자가 각 게시자의 고유 식별자를 기억할 수 있다면 여전히 가능하지만, 한편으로는 사용자가 게시자의 이름을 볼 수 있고 다른 한편으로는 해당 값이 데이터베이스에 저장되어 있는 경우에는 더욱 편리해 보일 것입니다. DataList 및 DataCombo 컨트롤을 사용하면 이 문제를 쉽게 해결할 수 있습니다.
2개의 데이터 소스, 3개의 필드, 인코딩 없음
DataList 및 DataCombo 컨트롤은 두 개의 데이터 소스를 사용하여 이 문제를 해결합니다. 게시자 이름만 표시하는 동안(Publishers 테이블에서) DataList 또는 DataCombo 컨트롤은 PubID 필드의 값만 Titles 테이블에 씁니다. 속성 창을 통해 RowSource를 기록할 데이터를 제공하는 데이터 소스(예: 게시자 테이블)로 설정합니다. 그런 다음 DataSource 속성을 데이터가 기록될 데이터 소스(예: Titles 테이블)로 설정합니다. 마지막으로 DataField, ListField 및 BoundColumn 속성을 설정합니다. 다음 그림에서는 두 개의 데이터 소스(두 개의 데이터 컨트롤 형식)와 세 개의 필드를 DataCombo 컨트롤에 할당하는 방법을 보여줍니다.
간단히 말해서 ListField 속성은 컨트롤이 표시하는 필드를 결정합니다. 이 경우에는 출판사 이름입니다. 반면에 BoundColumn 속성은 게시자 테이블의 어떤 필드가 Title 테이블에 실제 필요한 값을 제공하는지 결정합니다. 게시자 테이블의 PubID 필드는 편집할 수 없으며 편집해서는 안 됩니다. 대신 PubID 필드의 값이 DataField 속성에 지정된 필드에 기록됩니다. 이 예에서 이 속성은 Titles 테이블의 PubID 필드입니다.
다음 표에서는 이러한 속성의 개요와 사용 방법을 제공합니다.
DataList 및 DataCombo 컨트롤 은 단일 데이터 컨트롤과 함께 사용할 수도 있습니다. 이를 달성하려면 DataSource 및 RowSource 속성을 동일한 데이터 컨트롤로 설정하고 DataField 및 BoundColumn 속성을 데이터 컨트롤의 레코드 집합에서 동일한 필드로 설정하면 됩니다. 이 경우 목록은 업데이트되는 동일한 레코드 세트의 ListField 값으로 채워집니다. ListField 속성이 지정되었지만 BoundColumn 속성이 설정되지 않은 경우 BoundColumn은 자동으로 ListField 필드로 설정됩니다.
세부사항 DataCombo 컨트롤을 사용하여 단계별로 간단한 데이터베이스 애플리케이션을 생성하려면 "간단한 DataCombo 애플리케이션 생성"을 참조하십시오.
->