문제

특정 콤보 상자의 행 소스를 내 형태로 설정하는 데 어려움을 겪고 있습니다 (단일 형태 모드에서는 몇 가지 문제가있는 것 같습니다).

콤보 박스는 호출 된 필드에 묶여 있습니다 supplierID, 그리고 품목에 대한 가능한 모든 공급 업체 목록을 사용자에게 제시하기위한 것입니다. 내가 콤보 박스에 사용하는 행 소스는 다음과 같습니다.

SELECT DISTINCT Suppliers.name, Suppliers.supplierID
FROM Suppliers
INNER JOIN PartsSuppliers ON Suppliers.supplierID=PartsSuppliers.supplierID 
WHERE PartsSuppliers.partID = partID;

이 쿼리를 쿼리 디자이너 (partid 하드 코딩 포함)에서 볼 때 정상적으로 작동합니다. 선택한 항목에 대한 가능한 모든 공급 업체를 선택하고 다른 항목을 표시하지 않습니다. 하지만 콤보 박스의 항목을 보면 모두 공급 업체가 있습니다 PartsSuppliers 테이블 (두 개의 열만 있으면 부품을 가능한 공급 업체에 매핑).

또한 Onfocus 이벤트에서 일부 VBA를 사용하여 콤보 박스의 로우 소스를 설정하려고 시도했지만 (Partid 값을 하드 코딩) 로우 소스를 변경하지 않는 것 같습니다. 내가 사용하는 VBA 코드는 다음과 같습니다.

Private Sub supplierID_GotFocus()
    Dim query As String

    query = "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID "
    query = query & "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID "
    query = query & "WHERE (((PartsSuppliers.partID)=" & partID & "));"

    supplierDropDown.RowSource = query
    supplierDropDown.Requery
End Sub

또한 레코드 세트에서 해당 쿼리를 열고 해당 레코드 세트를 콤보 박스의 레코드 세트로 사용했지만 작동하지 않았습니다.

내가 무엇을 잘못하고 있습니까, 아니면 올바른 드롭 다운을 만들기 위해보고 있어야 할 다른 방법이 있습니까?

NB 내가 본 NB 액세스에서 연속적인 형태의 콤보 상자에 대한 사용자 정의 행 소스, 그러나 인정 된 솔루션은 나에게도 효과가 없었습니다.

도움이 되었습니까?

해결책

사용 OnEnter 그리고 OnExit 당신의 변화를위한 이벤트 RowSource.

Private Sub supplierID_Enter()
    supplierDropDown.RowSource = _
        "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
        "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID " & _
        "WHERE PartsSuppliers.partID = " & partID & ";"
End Sub

Private Sub supplierID_Exit()
    supplierDropDown.RowSource = _
        "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
        "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID;"
End Sub

다른 팁

콤보 항목이 제한되고 오랫동안 간단한 옵션을 찾을 수 없으면 데이터 시트에서 남은 '공백'을 피하는 방법에 어려움을 겪고 있습니다.

사용 가능한 모든 옵션을 콤보 상자에 남겨두고 Oncurrent를 사용하여 임시 유효성 검사 규칙을 추가하면 트릭이 완벽합니다.

이것이 내가 가진 한 오랫동안 책상 위에서 머리를 두드리는 것을 방해하지 않기를 바라고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top