2014-04-03 2 views
0

빠른 질문이 있습니다. 나는 메인 양식으로 표시된 날짜에 예약 된 모든 객실을 포함하는 하위 양식이있는 예약 시스템을 개발했습니다. 나는 콤보 상자를 추가하여 사용자가 콤보 상자에서 선택한 항목 만 보도록 방을 필터링 할 수 있도록했습니다 (하위 양식을 다시 쿼리 한 다음 필터링).필터링 vba를 사용하여 MS Access 하위 폼

내 코드가 서브의 끝 부분에 도달 한 후 명백한 이유가없는 필터링 서브를 반복 할 때가 있다는 사실은 별개로 작동합니까?. 모든 것을 올바르게 표시하므로 실제 문제와 관련이없는 한 신경 쓰지 않아도됩니다.

그러나 실제 문제는 내가 표시된 날짜에 예약이없는 방을 선택하는 것입니다. 필터가 잘 작동하지만 (비어있는 디스플레이) 콤보 상자에서 다른 방을 선택하려고하면 콤보 상자의 업데이트 이후의 다시 쿼리 기능이 작동하지 않습니다.

다른 누구도 전에 경험 했습니까?

워크 플로 :

'업데이트 후 이벤트'콤보 상자가 트리거됩니다. 이것은 sub-form을 다시 질의합니다. 'on current'이벤트의 배후에서, sub-form의 필터링이 발생합니다.

하위 양식이 비어있을 때 하위 양식을 다시 쿼리 할 수 ​​없습니다.

+0

링크 하위 필드와 링크 마스터 필드를 고려해 보셨습니까? – Fionnuala

+0

나는 이것을 가지고 있었고 서브 폼이 그것을 이해할 수 있도록 메인 폼으로 다시 쿼리/새로 고침을해야했다. –

+0

내 링크 하위 및 링크 마스터 필드는 이미 기본 양식의 날짜에 연결되어 있습니다. 이것은 하위 양식 필터가 사용자가 선택한 날짜 만 표시하는 방법입니다. – germantom

답변

1

나는 이와 비슷한 일을하고 힘들었지 만, 내 combo_box_afterupdate 이벤트에 다음 코드로 해결할 수있었습니다.

Dim rs As Object 
Me.Form.Filter = "" 
Me.Form.Refresh 
Set rs = Me.Recordset.Clone 
rs.FindFirst "[ValueToFind] = '" & Me![MyComboBoxValue] & "'" 
If Not rs.EOF Then Me.Bookmark = rs.Bookmark 

마지막으로 언급 한 사람과 부모와 자녀를 연결해야합니다.

+0

감사합니다. 시도했지만 예약되지 않은 회의실이 선택되면 여전히 동일한 문제가 발생합니다. 나는 그것을 '작동하게'하기 위해 이것을 채택했다. If rs.EOF 그런 다음 filter = false 및 사용자가 사용 가능하다는 것을 알 수있는 메시지 상자를 표시하십시오. 어떤 이유로 나는 여전히 전역 변수를 true로 설정하기 위해 필자의 필터 함수를 거치도록 주장했다. 나는 이것을 사용하여 모든 필터링 코드를 건너 뛸 수 있었다. 완벽하지는 않지만 작동합니다 :) – germantom

관련 문제