2011-04-28 6 views
1

두 개의 콤보 상자가 포함 된 양식의 액세스 데이터베이스가 있습니다. 하나의 콤보 상자는 첫 번째 콤보 상자의 선택에 따라 옵션을 필터링합니다. 이 완벽하게 작동하지만 - 나는 폼의 레코드 원본을 변경하는 명령 단추가 있습니다. 나는 단지 하나의 테이블을 기반으로 콤보 상자를 채우는 방법을 알고 있습니다. 따라서 폼이 레코드 소스를 변경하면 콤보 박스는 첫 번째 레코드 소스의 옵션으로 채워집니다. 콤보 상자 옵션을 채우는 쿼리는 일반적으로 하나의 테이블이 아닌 폼의 레코드 원본을 기반으로 작성하는 방법은 무엇입니까?필터 액세스 콤보 상자

답변

1

RecordSource를 변경하는 동일한 명령 단추 처리기에서 각 콤보 상자에 새 RowSource를 할당하십시오. 더 나은 방법은 버튼 핸들러에 의해 호출되는 별도의 하위에서 수행하는 것입니다. 귀하의 코드는 새로운 RowSource가 새로운 RecordSource에 대응되어야 하는지를 알아야하거나 알아낼 수 있어야합니다.

Dim sSQL As String 

sSQL = "select whatever from wherever" 
comboBox.RowSource = sSQL 

내가의 의견을 볼 수 없습니다 :

은 행 원본은 QueryDef 개체 수없는 의견에 회신

편집, 그냥 SQL 문이 될 수 있습니다 편집하고있는 시간과 같지만 두 번째로 묻는 내용을 이해하지 못했습니다. 두 번째로는 별도로 주석을 살펴 보겠습니다. RowSource를 폼의 RecordSource 속성. 이것은 나에게 나쁜 생각이다. RowSource에서 다루기를 원하는 것보다 RecordSource에 더 많은 열이있을 것이고, 쿼리 생성의 기본 원칙은 원하는 열만 요청하는 것이다.

+0

vba에서 sql 쿼리의 기초가되는 문자열을 만들면 해당 문자열로 새 액세스 쿼리를 작성하여 comboboxes의 행 원본으로 새 쿼리를 참조 할 수있는 방법이 있습니까? – Zack

+0

또한 vba에서 Form_FormName.RecordSource 핸들러를 사용하거나 sql에 액세스하여 행 소스를 할당하는 방법이 있습니까? 또는 아니오? – Zack

+1

"Form_FormName.RecordSource 처리기"가 없습니다. 어떤 코드가 변경 되더라도 Roland가 말한 것처럼 레코드 소스는 콤보 상자의 행 소스도 변경해야합니다. –