ACC2002: Access 프로젝트에서 매개 변수화된 콤보 상자를 사용하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 281870 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR281870
보통: 기본적인 매크로, 코드 작성 및 상호 운용성 기술이 필요합니다.

본 문서의 내용은 Microsoft Access 프로젝트(.adp)에만 적용됩니다.

모두 확대 | 모두 축소

이 페이지에서

요약

콤보 상자에는 사용자를 위해 선택 항목의 목록이 나타납니다. 테이블이나 쿼리 레코드의 하위 집합에 따라 콤보 상자의 행 원본을 만들어야 할 경우 선택 항목을 제한하기 위해 WHERE 절을 추가할 수 있습니다.

본 문서의 예제를 사용하면 NorthwindCS.adp 예제 프로젝트에 있는 Customers 폼에 콤보 상자가 추가됩니다. 콤보 상자에는 현재 고객이 발주한 주문 목록이 나타납니다. 주문을 선택하면 선택한 주문의 세부 내역을 볼 수 있는 Orders 폼이 열립니다.

4가지의 다른 방법을 사용하여 고객이 발주한 주문과 일치하는 주문 목록을 만들 수 있습니다. 이 방법은 데이터 원본으로 Microsoft SQL Server 2000의 Access 프로젝트(.adp)를 사용합니다. 이러한 방법은 다음 절에 설명되어 있습니다.

추가 정보

콤보 상자 만들기

이 절은 Customers 폼에서 현재 고객의 주문 목록이 표시된 콤보 상자를 만드는 방법에 대해 설명합니다.
  1. 디자인 보기에서 Customers 폼을 엽니다.
  2. 도구 상자에서 컨트롤 마법사를 선택한 다음 폼에 콤보 상자를 추가합니다.
  3. 마법사의 첫 페이지에서 테이블이나 쿼리에서 값을 찾도록 선택하고 다음을 누릅니다.
  4. 마법사의 두 번째 페이지에서 Orders 테이블을 누르고 다음을 누릅니다.
  5. 마법사의 세 번째 페이지에서 콤보 상자에 배치할 필드로 OrderID, CustomerID 및 OrderDate를 추가하고 다음을 누릅니다.
  6. 마법사의 네 번째 페이지에서 키 열 숨기기를 취소하고 화면에 표시되지 않도록 CustomerID 열을 축소합니다. 다음을 누릅니다.
  7. 마법사의 다섯 번째 페이지에서 다음을 다시 눌러 데이터베이스에 저장하거나 사용할 OrderID를 필드로 사용합니다.
  8. 마법사의 여섯 번째 페이지에서 다음에 사용할 수 있도록 값을 적어 두고 다음을 누릅니다.
  9. 마법사의 마지막 페이지에서 콤보 상자에 Select Order라는 이름을 부여한 다음 마침을 누릅니다.
  10. 콤보 상자에 대한 속성 시트를 열고 콤보 상자의 이름을 SelectOrderCombo로 변경합니다.
  11. 콤보 상자의 OnClick 속성을 아래의 이벤트 프로시저로 설정합니다.
    Private Sub SelectOrderCombo_Click()
    On Error GoTo Err_SelectOrderCombo_Click
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        stDocName = "Orders"
    
        stLinkCriteria = "[OrderID]=" & Me![SelectOrderCombo]
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    Exit_SelectOrderCombo_Click:
        Exit Sub
    
    Err_SelectOrderCombo_Click:
        MsgBox Err.Description
        Resume Exit_SelectOrderCombo_Click
    
    End Sub

코드를 추가하여 콤보 상자 새로 고침

이 절에서는 콤보 상자를 새로 고칠 수 있는 방법에 대해 설명합니다. 아래의 4가지 방법 중 하나를 선택하고 콤보 상자의 OnEnter 이벤트에 적절한 코드를 추가합니다.

방법 1 및 2의 경우 콤보 상자를 선택할 때마다 OnClick 이벤트가 콤보 상자의 행 원본을 다시 설정하여 현재 고객과 일치하는 주문만을 표시합니다.

참고: CustomerID 필드가 텍스트 필드이기 때문에 Forms 참조 앞뒤에 단일 인용 부호(')를 연결해야 합니다. 예를 들어 생성된 WHERE 절이
WHERE CustomerID = '" & Forms![Customers]![CustomerID] & "'"
에서 다음과 같이 변환됩니다.
WHERE CustomerID = 'ALFKI'

방법 1: 임시 선택 사용

콤보 상자의 OnClick 속성을 아래의 이벤트 프로시저로 설정합니다.
Me.SelectOrderCombo.RowSource = "SELECT TOP 100 PERCENT OrderID, CustomerID, OrderDate FROM Orders WHERE " _
     & "CustomerID = '" & Forms![Customers]![CustomerID] & "' ORDER BY OrderDate DESC"

방법 2: SQL Server 뷰 사용

  1. View Designer에서 새로운 보기를 만들고 Orders 테이블에서 OrderID, CustomerID 및 OrderDate 필드를 선택합니다. 주문 목록을 최신 주문에서 가장 오래된 주문으로 정렬하려면 OrderDate 필드에 대한 정렬 방식내림차순으로 설정합니다.
  2. 보기를 vwCustomerOrders로 저장합니다.
  3. 콤보 상자의 OnEnter 속성을 아래의 이벤트 프로시저로 설정합니다.
    Me.SelectOrderCombo.RowSource = "SELECT * FROM vwCustomerOrders WHERE CustomerId = '" & Forms![Customers]![CustomerID] & "'"
방법 3 및 4의 경우 저장 프로시저나 SQL 함수를 다시 실행하여 일치 레코드를 반환하기 위해 OnEnter 이벤트에서 콤보 상자 Requery 메서드가 호출됩니다. 이 예에서 매개 변수는 폼에서 조건에 @ControlName을 사용하는 컨트롤로 정의됩니다. Access가 자동으로 조건을 평가하고 일치 레코드를 요청합니다.

아래 예에서 콤보 상자는 현재 고객에 대한 모든 주문 목록을 반환합니다. CustomerID 텍스트 상자에 현재 고객 ID가 포함되어 있기 때문에 저장 프로시저나 SQL 함수 조건의 CustomerID 텍스트 상자를 직접 참조할 수 있습니다.

방법 3: SQL Server 저장 프로시저 사용

  1. 그래픽 디자이너에서 새 프로시저를 만듭니다.
  2. Orders 테이블을 선택한 다음 저장 프로시저에 OrderID, CustomerID 및 OrderDate 필드를 추가합니다.
  3. CustomerID 필드에 대한 조건으로 @CustomerID를 입력하고 OrderDate 필드를 내림차순으로 정렬합니다.
  4. 저장 프로시저를 spCustomerOrders로 저장하고 닫습니다.
  5. spCustomerOrders 저장 프로시저를 콤보 상자의 행 원본으로 설정합니다.

    참고: 아래 SQL 문은 Stored Procedure Designer를 통해 만들어지고 저장됩니다.
    CREATE PROCEDURE dbo.spCustomerOrders
      (@CustomerID varchar(5))
      AS SELECT OrderID, CustomerID, OrderDate
      FROM   dbo.Orders
      WHERE  (CustomerID = @CustomerID)
      ORDER BY OrderDate DESC
  6. 콤보 상자의 OnEnter 속성을 아래의 이벤트 프로시저로 설정합니다.
    Me.SelectOrderCombo.Requery

방법 4: SQL Server 2000 함수 사용

Access 프로젝트가 데이터 원본으로 SQL Server 2000 이상을 사용할 경우에만 이 방법을 사용할 수 있습니다.
  1. 그래픽 디자이너에서 함수를 만듭니다.
  2. Orders 테이블을 선택한 다음 저장 프로시저에 OrderID, CustomerID 및 OrderDate 필드를 추가합니다.
  3. CustomerID 필드에 대한 조건으로 @CustomerID를 입력하고 OrderDate 필드를 내림차순으로 정렬합니다.
  4. 함수를 fnCustomerOrders로 저장하고 닫습니다.
  5. fnCustomerOrders 함수를 콤보 상자의 행 원본으로 설정합니다.

    참고: 아래 SQL 문은 Stored Procedure Designer를 통해 만들어지고 저장됩니다.
    CREATE FUNCTION dbo.fnCustomerOrders
      (@CustomerID varchar(5))
      RETURNS TABLE
      RETURN ( SELECT TOP 100 PERCENT OrderID, CustomerID, OrderDate
      FROM   dbo.Orders
      WHERE  (CustomerID = @CustomerID)
      ORDER BY OrderDate DESC )
  6. 콤보 상자의 OnEnter 속성을 아래의 이벤트 프로시저로 설정합니다.
    Me.SelectOrderCombo.Requery
이 방법을 테스트하려면 폼을 열고 Select Order 콤보 상자에서 선택합니다. OnEnter 이벤트가 콤보 상자를 다시 쿼리하고 현재 고객에 대한 주문 목록을 자동으로 생성합니다. 주문을 선택하면 콤보 상자의 OnClick 이벤트가 실행되고 선택한 주문이 나타나면서 Orders 폼이 열립니다.

속성

기술 자료: 281870 - 마지막 검토: 2003년 11월 11일 화요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Access 2002 Standard Edition
키워드:?
kbhowto accesscs KB281870

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com