2012-04-23 4 views
0

하위 폼에 두 개의 콤보 상자가 있습니다. 첫 번째 콤보 상자가 두 번째 콤보 상자를 채우는 데 사용됩니다. 이것들은 폼의 세부 구역에 배치됩니다. 나는 그들이이 방법으로 일하기를 원한다. 첫 번째 콤보 박스에서 어떤 값을 선택하면 같은 행의 두 번째 콤보 박스가 관련 값으로 채워지 길 원한다.다른 행에 대해 콤보 상자 캐스케이드 효과가 작동하지 않습니다.

지금부터는 이것을 구현하려했는데 행 1의 첫 번째 콤보 상자에서 값을 선택하면 같은 행의 두 번째 콤보 상자가 채워지는 것을 볼 수 있지만 첫 번째 집합에서 값을 선택하면됩니다. comboboxes 위의 comboboxes 두 번째 집합의 값이 변경되거나 null이되는 것을 볼 수 있습니다.

여기에 코드입니다 :

제 1 회 콤보는 cboRCMTask입니다 :

Private Sub cboRCMTask_AfterUpdate() 
    Me.cboRCMTaskOptions.RowSource = "SELECT ID, RCMTaskOptions FROM tblRCMTaskOptions WHERE RCM_ID=" & Me.cboRCMTask.Column(0) & ";" 
    Me.cboRCMTaskOptions = Me.cboRCMTaskOptions.ItemData(0) 
    Me.cboRCMTaskOptions.Requery 
End Sub 

cboRCMTaskOptions 두 번째 콤보입니다.

form_current 이벤트 :

Private Sub Form_Current() 
    Me.cboRCMTask.RowSource = "SELECT ID, RCMTask FROM tblRCMTask;" 
    If IsNull(txtRCM_ID) Then 
     Me.cboRCMTask = Me.cboRCMTask.ItemData(0) 
    End If 
    Me.cboRCMTaskOptions.RowSource = "SELECT ID, RCMTaskOptions FROM tblRCMTaskOptions WHERE RCM_ID=" & Me.cboRCMTask.Column(0) & ";" 
    If IsNull(txtRCMOption_ID) Then 
     Me.cboRCMTaskOptions = Me.cboRCMTaskOptions.ItemData(0) 
    End If 
End Sub 

답변

1

의 코드를 처음 부분에서 않게합니다 이벤트에 코드를 이동. ItemData에 대한 참조로 무엇을 얻으려고하는지 잘 모르겠지만 불필요하다고 생각하면 그 줄을 주석 처리하십시오.

마찬가지로 Form_current 이벤트의 세 번째 마지막 줄은 다시 쿼리로 바꿉니다.

+0

클릭 이벤트는 권장하지 않습니다. 이것이 단일 형식 인 경우, 현재 이벤트와 업데이트 1 이후의 이벤트는 계단식 조합에 대한 일반적인 이벤트입니다. – Fionnuala

+0

두 번째 콤보 상자를 다시 쿼리 할뿐만 아니라 폼의 본문 섹션에 기본값을 표시합니다. – user1175126

+0

@ user1175126 연속 양식을 사용하고 있습니까? 당신이 있다면이 모든 일이 일어나지 않을 것이기 때문입니다. – Fionnuala

1

귀하의 설명에서, 귀하는 지속적인 양식을 사용하고 있습니다. 그것은 연속적인 형태로 많은 행을 가지고있는 것처럼 보입니다. 코딩의 관점에서 볼 때 하나의 행 즉 현재 행 만 가질 수 있습니다. 나는 콤보 2의 컨트롤 소스가 콤보의 숨겨진 숫자 열이라고 생각합니다. 콤보의 행 소스를 변경하면 보이는 행을 더 이상 찾을 수 없으므로 표시 할 수 없습니다. 편집을 위해 팝업 양식을 제공하거나 양식의 값을 저장하는 텍스트 상자와 그 값을 편집하기위한 약간 사기스러운 콤보를 제공해야합니다. 조건부 서식을 사용하여 모양을 향상시키기 위해 약간의 작업을 수행 할 수 있습니다.

+0

두 번째 콤보 상자의 컨트롤 소는 문자열 인 RCMOption_ID입니다. – user1175126

+0

나는 당신이 요점을 얻고 있는지 확신하지 못합니다. 당신은 연속 된 형태를 사용하는 것 같습니다. 현재 이벤트에서 두 번째 콤보를 변경하면 ** 모든 ** 행에 대해 두 번째 콤보가 변경됩니다. – Fionnuala

+0

그래서 어떻게 수정합니까? 현재 이벤트가 아닌 경우 어디에 있습니까? – user1175126

관련 문제