2009-11-11 6 views
3

코드를 통해 Access 2007 분할 양식의 특정 열을 숨기려고합니다. 어떤 조건을 검사하여 열을 표시해야하는지 여부를 확인하는 양식이 필요합니다. 이 같은 열을 숨길 형태의 '활성화'이벤트에 코드를 가지고 :VBA를 사용하여 Microsoft Access 2007 데이터 시트의 열을 숨김

txtControl.ColumnHidden = True 

이 코드는 "열기"경우에 작동하지만, 내가 활성화에 열을 숨기 경우, 그것은 이러한 변경 사항을 표시하지 않습니다 양식을 닫고 다시 열 때까지. 폼의 새로 고침, 다시 그리기 및 재진 호출 메서드를 호출하려고 시도했지만 작동하지 않습니다. 도와주세요!

편집 : 이상적으로, 나는 초점을 전환 할 때마다 발생하는 이벤트를 필요한이 form.That의 내가 Activate 이벤트가 아닌 Open 이벤트를 사용하고 있습니다 이유.

+1

양식을 열었을 때 Activate 이벤트가 호출되는지 확인 했습니까? 'Debug.Print "활성화가" "이라고 불리는 코드 줄을 추가하십시오. 그렇게하면 호출되었는지 알 수 있습니다. 폼의 컨트롤이로드되기 전에 Activate가 호출 될 수 있습니다. –

+1

나는 컨트롤이로드 된 후 Activate가 **라는 문제가 있다고 생각합니다. 활성화는 양식이로드 될 때 마지막 작업이지만 해당 양식으로 전환 할 때도 호출됩니다. 이것은 내가 필요한 행동입니다. – Skywalker

+1

당신은 정말로 컨트롤 참조 앞에 나를 붙이는 버릇이 있어야합니다! 식별자, 즉 Me! txtControl.ColumnHidden 또는 Me.txtControl.ColumnHidden. –

답변

7

양식의 Current 또는 Load 이벤트로 설정해보십시오. 또한 해당 속성을 설정 한 후에 컨트롤을 다시 쿼리해야 할 수도 있습니다. Me.TextControl.Requery 양식의 레코드가 변경 될 때마다 현재를 호출하고 폼을 다시 그리거나 다시 쿼리 할 때마다 호출됩니다. Load는 이름에서 알 수 있듯이 폼이 레코드를로드 할 때 폼이 열린 후에 한 번 호출됩니다. 이것들은 항상 Activate을 사용하는 것보다 나를 위해 더 안정적이었습니다. 정말 폼의 포커스와 관련이 있습니다. 실제로 원하는 것은 아닙니다.

+0

문제는 포커스가이 양식으로 바뀔 때마다 발생하는 이벤트입니다. 주 메뉴로 작동하고 복잡한 필터 옵션이 많은 다른 양식이 있습니다. 데이터 시트가있는 양식을 열거 나 전환 할 때 주 메뉴 양식을 기반으로 양식을 다시 채 웁니다. 또한 해당 시점과 관련이없는 열을 숨기고 싶습니다. – Skywalker

0

Access 2002에서 작업하기 전에 이런 문제가있었습니다. 하위 폼 원본 개체를 동일하게 설정하고 쿼리를 실행하여 하위 폼 문제를 해결할 수있었습니다.

Me.SubForm.SourceObject = Me.SubForm.SourceObject 
Me.SubForm.Requery 

이 기술이 특정 상황에서 작동하는지 확인하십시오.

관련 문제