1

두 개의 콤보 상자가있는 하위 폼이있는 기본 폼이 있습니다. 첫 번째 콤보 상자의 선택에 따라 두 번째 콤보 상자를 제한하려고합니다. 나는 첫 번째 콤보 상자의 행 원본이 코드를 추가 :하위 폼의 종속 콤보 박스

SELECT DISTINCT tblAll.Country FROM tblAll ORDER BY tblAll.Country; 

후 첫 번째 콤보 상자의 업데이트 이벤트 후 나는 두 번째 콤보에 대한 하나 개의 값을 선택하면 내 문제는 내가 할 수있다

Private Sub cboCountry_AfterUpdate() 

    On Error Resume Next 

    cboCity.RowSource = "Select tblAll.City " & _ 
      "FROM tblAll " & _ 
      "WHERE tblAll.Country = '" & cboCountry.Value & "' " & _ 
      "ORDER BY tblAll.City;" 

End Sub 

을 추가로 첫 번째 콤보 상자를 콤보 상자에있는 모든 옵션으로 변경하십시오.

예를 들어, 먼저 첫 번째 콤보 상자에서 프랑스를 선택하고 두 번째 콤보는 프랑스의 도시를 보여 주며 하나를 선택합니다. 이제는 콤보 박스 하나를 미국으로 바꿀 수 있습니다.

두 번째 콤보 상자에 프랑스에서 한 도시가 있고 첫 번째 콤보 상자의 값을 미국으로 변경 했으므로이 레코드를 저장하고 하위 레코드에 다른 레코드를 저장하려면 가능합니다.

제한하려면 어떻게해야합니까? 제 2 콤보 박스에서 도시를 선택하면, 첫 번째 콤보 박스의 가치를 바꿀 가능성이 없습니다. 왜냐하면이 상황에서 데이터베이스가 잘못되어 특정 국가에 속하지 않는 도시를 구할 수 있기 때문입니다.

답변

0

잘못된 국가를 선택한 경우 사용자가 국가를 변경할 수 없어야합니까?

두 번째 콤보 상자에서 데이터를 삭제하는 첫 번째 콤보 상자의 AfterUpdate 이벤트에 코드가 있어야합니다 (콤보 상자 값을 Null로 설정). 이제 사용자가 적절한 도시를 선택해야합니다.

도시를 선택한 후 사용자가 국가를 변경할 수 없도록하려면 국가 콤보 박스를 비활성화하거나 잠글 수 있습니다. 그런 다음 새 레코드로 이동할 때 다시 활성화하십시오. 또한 기존 레코드를 다시 열 때 비활성화/잠금을 원할 것입니다. 국가의 콤보 박스를 장애인/고정 된 디자인으로 설정 한 다음 프로그래밍 방식으로 새로운 레코드 만 활성화하십시오.

combobox 2 RowSource를 콤보 박스 2 GotFocus 이벤트로 설정하도록 코드를 권장하십시오.

+0

죄송합니다. 액세스 할 수 없습니다 .Me.cityName = Null 을 첫 번째 콤보 상자의 업데이트 후에 추가했지만 변경된 사항이 없습니다. 내가 두 번째 콤보 상자의 값을 선택할 때 나는 첫 번째 콤보 상자의 값을 내가 가진 모든 옵션으로 변경할 수 있습니다. – Mitra

+0

위의 편집에서 편집하십시오. – June7

+0

실제로 사용자가 데이터를 편집 할 수있는 데이터 입력 양식을 디자인해야합니다. 사용자가 잘못 입력 한 경우 국가를 변경할 가능성이 있으므로 잘못된 국가와 도시를 입력하면 변경할 수 있습니다. 문제는 그가 국가를 선택하고 도시에 따라 도시를 선택하면 현재 국가를 원하는대로 전환 할 수있는 가능성이 있기 때문에 잘못된 정보를 저장할 수 있다는 것입니다. – Mitra