2016-09-23 5 views
0

데이터 시트 하위 폼에 콤보 상자 이름 Loan_ID_cbo가 있습니다. 콤보 상자를 통해 필터를 업데이트 할 때마다 하위 폼은 하위 폼에서 선택한 Laon ID로 대출 ID (기본 키)를 업데이트하므로 테이블의 데이터가 변경됩니다.MS Access 하위 필드의 값 변경 다른 필드의 값 변경

이 데이터 만 필터링하고 필터가 테이블의 데이터를 편집하지 못하도록하고 싶습니다. 어떻게 이런 일이 일어나지 않도록 할 수 있습니까?

가 여기에 After_Update 이벤트에 대한 내 VBA 코드 : 만약 내가 제대로 이해하고

Private Sub Loan_ID_cbo_AfterUpdate() 

Application.Echo False 

Me.Filter = "MyKey = '" & Loan_ID_cbo & "'" 
Me.FilterOn = True 

If Loan_ID_cbo = "" Then 
    Me.Filter = "" 
    Me.FilterOn = False 
End If 

Application.Echo True 

End Sub 

답변

2

, 당신의 콤보는 하위 데이터 시트에 있습니다. 따라서 각 행에 콤보 상자가 나타납니다.

아마 당신의 콤보 박스가 Mykey 필드에 바인딩되어 있기 때문에 발생합니다. 그래서 콤보 상자를 바꾸면 Mykey의 가치를 바꿀 수 있습니다. 이 콤보를 삭제, 하위 폼에서

  1. , 새로운 텍스트 상자를 추가

    당신은 하위 폼에있는 MyKey 필드에서 필터링 콤보를해서는 안

    , 당신은 부모 폼에 언 바운드 콤보 상자를 확인해야합니다 그것을 Mykey에 묶어 라.

  2. 메인 폼에 새 콤보 박스를 만들고이 콤보 상자를 사용하여 하위 폼을 필터링하십시오.

    또한
    Private Sub Loan_ID_cbo_AfterUpdate() 
    
        Application.Echo False 
    
        Me.subformname.Form.Filter = "MyKey = '" & Loan_ID_cbo & "'" 
        Me.subformname.Form.FilterOn = True 
    
        If Loan_ID_cbo = "" Then 
         Me.subformname.Form.Filter = "" 
         Me.subformname.Form.FilterOn = False 
        End If 
    
        Application.Echo True 
    
    End Sub 
    
+0

,'에코 FALSE '를 제거 : 그래서 코드는 무엇인가가 될 것이다. 'Me.Painting'을 False로 설정하고 True를 설정하면됩니다. – Gustav

+0

콤보 박스는 데이터 시트를 필터링하는 기본 폼에있었습니다. 그러나 나는 언 바운드 콤보 박스를 만들었고 문제를 해결했습니다. 이것은 또한 콤보 박스를 사용하여 데이터 시트를 제거 할 수 있습니까? 감사합니다 –

+0

만약 mainform에 있다면 값을 바꿨고'me.filter'를 사용하여 아무것도 필터링 할 수 없었습니다.'me.subformname.form.filter'를 사용해야합니다. 콤보 박스가 비어 있으면 코드가 제거되지 않습니다. –