2010-04-01 3 views
1

계단식 콤보 상자에 문제가 있습니다. 콤보 상자를 사용하면 모든 것이 올바르게 작동하며 값이 올바르게 채워집니다.계단식 콤보 상자로 인해 다음 레코드에서 빈 필드가 발생합니다.

SELECT AdjusterCompanyOffice.ID, AdjusterCompanyOffice.Address1,  
AdjusterCompanyOffice.Address2, AdjusterCompanyOffice.Address3, 
AdjusterCompanyOffice.Address4, AdjusterCompanyOffice.Address5 FROM 
AdjusterCompanyOffice ORDER BY AdjusterCompanyOffice.Address1; 

두 콤보가 동일한 컨트롤 원본을 가지고

Private Sub cmbAdjComp_AfterUpdate() 
Me.cboAdjOff.RowSource = "SELECT AdjusterCompanyOffice.ID, 
AdjusterCompanyOffice.Address1, 
AdjusterCompanyOffice.Address2, 
AdjusterCompanyOffice.Address3, 
AdjusterCompanyOffice.Address4, 
AdjusterCompanyOffice.Address5 FROM" & _ 
" AdjusterCompanyOffice WHERE 
AdjusterCompanyOffice.AdjCompID = " & Me.cmbAdjComp.Column(1) & _ 
" ORDER BY AdjusterCompanyOffice.Address1" 
Me.cboAdjOff = Me.cboAdjOff.ItemData(0) 
End Sub 

보조 콤보 상자 행 원본 쿼리가 있습니다.

모든 것이 잘 작동하고 멋지게 이동하며 상자는 각 레코드에 대해 올바른 필드를 표시합니다.

첫 번째 콤보 상자를 사용한 다음 두 번째 콤보 상자에서 적절한 옵션을 선택하면 모든 항목이 특정 레코드에서 잘 작동합니다.

그러나 다음 레코드로 이동할 때 두 번째 콤보 상자의 값은 모두 비어 있습니다. 양식을 닫았다가 다시 열어 계단식 콤보 상자를 사용하지 않으면 레코드간에 이동할 때 모든 값이 모두 올바른 것입니다.

어떻게 든 계단식 콤보 상자를 사용하면 보조 콤보 상자의 행 원본과 충돌이 발생합니다.

희망은 분명합니다! 답을 찾기 위해 주변을 뒤적 거리며 있지만 아무것도 찾을 수 없습니다.

모든 도움을 주시면 대단히 감사하겠습니다. 당신이 도착하면 당신이 (당신이 원하는입니다) TRUE로 설정 NotInList, 그러나 때문에

감사

노엘

+0

두 개의 콤보 상자가 동일한 ControlSource에 바인딩되어 있습니까? 그것은 정말로 전혀 이해가되지 않습니다. –

+0

안녕하세요, David는 동일한 컨트롤 소스를 사용하는 두 개의 콤보 상자를 사용했습니다. 당시의 의미에서! 이제 더 많은 이해와 함께 내가 잘못 가고있는 곳을 볼 수있었습니다. – noelmcg

답변

0

다음 레코드로 이동하면 콤보 상자가 비어 이유는 레코드의 경우, 콤보 박스가 바인드 된 필드에 저장된 값을 포함하지 않도록 rowsource가 필터링되었습니다. 따라서 값은 비어 있지만 목록에 없기 때문에 값을 표시 할 수 없습니다.

이 문제를 해결하려면 두 번째 콤보 상자에서 필터를 지워야합니다. 의 형태의 모듈, 하나의 상단에 두 개의 상수를 만들어

Me!cboAdjOff.RowSource = "SELECT AdjusterCompanyOffice.ID, AdjusterCompanyOffice.Address1, AdjusterCompanyOffice.Address2, AdjusterCompanyOffice.Address3, AdjusterCompanyOffice.Address4, AdjusterCompanyOffice.Address5 FROM AdjusterCompanyOffice ORDER BY AdjusterCompanyOffice.Address1" 

내가 일반적으로이 문제를 해결할 : 그렇게하려면 양식의 OnCurrent 이벤트, 필터링 된 콤보 상자의 행 원본이 필터링되지 않은로 설정 SELECT 문과 ORDER BY에 대한 문 :

cstrRecordsourceSelect = "SELECT AdjusterCompanyOffice.ID, AdjusterCompanyOffice.Address1, AdjusterCompanyOffice.Address2, AdjusterCompanyOffice.Address3, AdjusterCompanyOffice.Address4, AdjusterCompanyOffice.Address5 FROM AdjusterCompanyOffice" 
    cstrRecordsourceOrderBy = "ORDER BY AdjusterCompanyOffice.Address1" 

그러면 처리하기가 훨씬 쉽습니다.

Me!cboAdjOff.RowSource = cstrRecordsourceSelect & " " & cstrRecordsourceSelect 

... 그리고 첫 번째 콤보 상자의 대한 AfterUpdate에서 : 다음 OnCurrent 그것은 다음과 같습니다

Me!cboAdjOff.RowSource = cstrRecordsourceSelect & _ 
    "WHERE AdjusterCompanyOffice.AdjCompID = " & Me!cmbAdjComp.Column(1) & _ 
    " " & cstrRecordsourceSelect 

이것은 코드를 읽기 쉽게, 또한하기가 쉬워집니다 필요한 경우 rowsource를 변경하십시오. 상수 만 편집해야하기 때문입니다.

+0

안녕하세요, David. 정확히 이해하려고 노력했습니다. 나는 말하자면 많은 노력이 필요하다고 생각하지 않았지만 당신의 도움과 함께 나는 그것을 작동 시켰습니다. 시간을내어 주셔서 감사합니다. 크게 감사드립니다. 크리스마스 축가 – noelmcg

관련 문제