Microsoft Access의 콤보 상자 선택 영역에서 특정 레코드로 이동하는 방법

보통: 기본 매크로, 코딩 및 상호 운용성 기술이 필요합니다.

이 문서는 Microsoft Access 데이터베이스(.mdb) 파일이나 Microsoft Access 데이터베이스(.accdb) 파일에 적용됩니다.

요약

이 문서에서는 콤보 상자에서 선택한 항목을 기반으로 특정 레코드로 이동하는 네 가지 방법을 보여 줍니다. 메서드는 다음과 같습니다.

  • 콤보 상자의 AfterUpdate 이벤트에서 FindFirst 메서드를 사용하는 코드를 실행합니다.
  • 콤보 상자의 AfterUpdate 이벤트에서 폼의 Filter 속성을 다시 쿼리하는 매크로를 호출합니다.
  • 기본 폼에 콤보 상자가 있는 폼/하위 폼과 하위 폼 컨트롤의 LinkMasterFields 및 LinkChildFields 속성에 바인딩된 하위 폼의 데이터를 사용합니다.
  • 두 테이블을 조인하는 쿼리에서 폼을 기반으로 한 다음 AutoLookup 기술을 사용하여 조인을 제어하는 필드에 콤보 상자를 바인딩합니다.

이러한 네 가지 방법은 이 문서의 "추가 정보" 섹션에 설명되어 있으며 Northwind 샘플 데이터베이스를 기반으로 합니다.

추가 정보

Microsoft에서 제공하는 프로그래밍 예제는 예시를 위한 것일 뿐이며 이와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다. 이는 상품성이나 특정 목적에 대한 적합성의 묵시적인 보증을 포함하며 이에 제한되지 않습니다. 이 문서에서는 예제에 사용되고 있는 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구를 사용자가 잘 알고 있는 것으로 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.

주의

이 예제의 단계를 수행하면 샘플 데이터베이스 Northwind.mdb 수정합니다. Northwind.mdb 파일을 백업하고 데이터베이스 복사본에서 다음 단계를 수행할 수 있습니다.

다음 표에서는 네 가지 메서드의 기능(이점 및 단점)을 비교합니다.

메서드 1 2 3 4
코드/매크로가 필요하지 않음 X
하위 폼은 필요하지 않습니다. X X
다른 레코드로 스크롤할 수 있습니다. X X
쿼리가 필요하지 않음 X X X X
레코드를 편집할 수 있습니다. X X X X
다른 모드에서 폼 열기 X

참고

이러한 메서드는 텍스트 상자에도 적용할 수 있습니다.

방법 1

  1. ProductID 필드와 ProductName 필드가 있는 Products라는 테이블을 만듭니다.

  2. 자동 폼: 열 형식 마법사를 사용하여 Products 테이블을 기반으로 하는 새 양식을 만든 다음, 폼을 frmComboTest로 저장합니다.

    Microsoft Office Access 2003 및 이전 버전의 Access에서 이 작업을 수행하려면 다음 단계를 수행합니다.

    1. 데이터베이스 창의 개체 아래에서 클릭합니다.
    2. 데이터베이스 창 도구 모음에서 새로 만들기를 클릭합니다.
    3. 새 양식 대화 상자에서 자동 폼: 열 형식을 클릭하고 드롭다운 목록에서 제품 테이블을 선택한 다음 확인을 클릭합니다.
    4. 폼을 frmComboTest로 저장합니다.

    Microsoft Office Access 2007 이상 버전에서 이 작업을 수행하려면 다음 단계를 수행합니다.

    1. 만들기 탭의 양식 그룹에서 양식 마법사를 클릭합니다.
    2. 마법사에서 대화 상자의 드롭다운 목록에서 제품 테이블을 선택합니다.
    3. 새 양식에서 보려는 필드를 선택한 다음, 다음을 클릭합니다.
    4. 열 형식 옵션을 선택하여 양식의 레이아웃을 설정한 다음, 다음을 클릭합니다.
    5. 양식 제목으로 frmComboTest 를 입력한 다음 마침을 클릭합니다.
  3. 콤보 상자 마법사를 사용하여 언바운드 콤보 상자를 추가합니다. 이렇게 하려면 다음과 같이 하십시오.

    1. 디자인 보기에서 frmComboTest 양식을 엽니다.
    2. 도구 모음에서 제어 마법사 가 선택되어 있는지 확인합니다.

    참고

    Access 2007 이상 버전에서는 디자인 탭의 컨트롤 그룹에서 컨트롤 마법사 사용이 선택되어 있는지 확인합니다.

    1. frmComboTest 양식에 콤보 상자를 만듭니다.

    참고

    Access 2007 이상 버전에서 디자인 탭의 컨트롤 그룹에서 콤보 상자를 클릭한 다음 frmComboTest 양식을 클릭합니다. 작성기 선택 대화 상자에서 콤보 상자 마법사를 클릭한 다음 확인을 클릭합니다.

    1. 콤보 상자 마법사 대화 상자에서 콤보 상자에서 선택한 값에 따라 양식에서 레코드 찾기 옵션을 선택한 다음, 다음을 클릭합니다.
    2. ProductID 및 ProductName 필드를 선택하고 다음을 클릭합니다.
    3. 마침을 클릭합니다.

    콤보 상자 마법사는 다음과 유사한 이벤트 프로시저를 만듭니다.

    Private Sub Combo0_AfterUpdate()
         ' Find the record that matches the control.
         Dim rs As Object
    
     Set rs = Me.Recordset.Clone
         rs.FindFirst "[ProductID] = " & Str(Nz(Me![Combo20], 0))
         If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub
    
  4. 폼 보기에서 frmComboTest 양식을 봅니다.

    콤보 상자에서 제품 이름을 선택하면 선택한 제품의 레코드로 이동됩니다.

방법 2

  1. 메서드 1의 2단계에 설명된 대로 자동 폼: 열 형식 마법사 를 사용하여 Products 테이블을 기반으로 새 양식을 만든 다음, 폼을 frmComboTest2로 저장합니다.

  2. frmComboTest2 양식의 속성 시트 페이지에서 데이터 탭의 Filter 속성을 로 [ProductName] = Forms![frmComboTest2]![cboLookup]설정합니다.

  3. cboLookup이라는 언바운드 콤보 상자를 추가한 다음 컨트롤의 속성을 다음과 같이 설정합니다.

    Combo Box
    -----------------------------------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Select [ProductName] from Products;
    BoundColumn: 1
    ColumnWidths: 1"
    AfterUpdate: mcrLocateProduct
    
  4. mcrLocateProduct라는 매크로를 만듭니다.

    Action
    --------------------------------------
    SetValue
    Requery
    
    mcrLocateProduct Actions
    --------------------------------------
    SetValue
    Item: Forms![frmComboTest2].FilterOn
    Expression: True
    

    frmComboTest2 양식을 열고 cboLookup 콤보 상자에서 제품 이름을 선택하면 필터가 해당 값으로 설정됩니다.

방법 3

  1. 메서드 1의 2단계에 설명된 대로 자동 폼: 열 형식 마법사 를 사용하여 Products 테이블을 기반으로 새 양식을 만든 다음, 폼을 frmSub로 저장합니다.

  2. frmSub 양식의 속성 시트 페이지에서 서식 탭의 기본 보기 속성을 단일 폼으로 설정합니다.

  3. 테이블이나 쿼리를 기반으로 하지 않는 새 양식을 만들고 frmMain으로 저장합니다. 그런 다음, 콤보 상자를 추가하고 다음과 같이 해당 속성을 설정합니다.

    Combo Box
    ----------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Products
    ColumnCount: 4
    ColumnWidths: 0";2"
    BoundColumn: 1
    
  4. frmSub 폼의 하위 폼 컨트롤을 삽입합니다.

    • 하위 폼/하위 보고서디자인>으로 이동한 다음 하위 폼 마법사를 취소합니다.
    • 탐색 창에서 frmSub를 frmMain 양식으로 끌어서 놓습니다.
  5. 다음과 같이 하위 폼 컨트롤 속성을 설정합니다.

    Subform
    ----------------------------
    LinkChildFields: [ProductID]
    LinkMasterFields: cboLookup
    

    cboLookup 컨트롤의 값을 변경하여 Access는 하위 폼의 레코드가 콤보 상자와 일치하도록 합니다.

    Northwind 샘플 데이터베이스의 Orders 양식은 이 방법을 보여 줍니다. 주문 세부 정보 하위 폼은 LinkMasterFieldsLinkChildFields 속성과 관련이 있습니다.

메서드 4: WHERE 절과 함께 OpenForm 매크로 함수 사용

  1. 메서드 1의 2단계에 설명된 대로 자동 폼: 열 형식 마법사 를 사용하여 Products 테이블을 기반으로 새 양식을 만든 다음, 폼을 frmComboTest5로 저장합니다.

  2. cboLookup이라는 언바운드 콤보 상자를 추가한 다음 컨트롤의 속성을 다음과 같이 설정합니다.

    Combo Box
    -----------------------------------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: SELECT [ProductID], [ProductName] FROM Products ORDER BY [ProductName];
    BoundColumn: 1
    ColumnCount: 2
    ColumnWidths: 0";1"
    
  3. 매크로 작성기에서 cboLookup 콤보 상자에 대한 이벤트에 포함된 새 매크로 AfterUpdate 를 만듭니다.

  4. 새 작업 추가 드롭다운 목록에서 OpenForm을 선택한 다음, 다음 속성을 설정합니다.

    Form Name:   frmComboTest5
    View:        Form
    Filter Name: <leave as empty>
    Where Condition: [ID] = [Forms]![frmComboTest5]![cboLookup].value
    Data Mode: <optional>
    Window Mode: <optional>
    
  5. 매크로를 저장하고 닫습니다.

  6. 양식을 저장하고 실행합니다.

콤보 상자의 값을 변경하면 폼이 닫혀 필터가 적용된 상태에서 다시 열립니다.