2016-08-10 2 views
2

사용자가 세부 정보를 편집하지 못하게해야하는 액세스 권한이 있습니다. Me.Allowedits를 false로 설정하여 처리했습니다. 그러나 내가 편집 할 수 있도록 열어 둘 필요가있는 분야가 하나 있습니다. 이렇게하려면 허용 된 코드가 발생한 두 곳에서 허용 된 부분 뒤에 필드를 여는 코드를 jus에 두었습니다. 디버깅에 대한 흐름은 내가 form.Basically의 현재 이벤트에 복제 된 같은 일이 난 그냥 allowedits가 fasle로 설정 한 곳의 코드를 유지 한이액세스 허용 후 필드 열기

Load 
Me.allowedits =false 
if condition=true 
field.locked=false 
field.enalble=true 

같았다. 하지만 내 필드는 여전히 잠겨있어 편집 할 수 없습니다. 일단 allowedits = false로 설정하면 페이지의 필드를 다시 편집 할 수 없기 때문입니다. 다른 대안이 있습니까?

감사합니다.

+0

바운드 또는 언 바운드이 하나 개의 필드 : 그것은 동적이라면

,이 같은 절차를 사용? – Andre

+0

답변을 주셔서 감사합니다 andre ..... 내가 얘기하는 분야는 사용자가 날짜를 선택하고 테이블에 저장하는 단순한 텍스트 상자입니다. 그래서 예. 바운드입니다. –

+0

폼이 아닌 편집을 막는 컨트롤 (Locked = True). 태그를 추가하는 것이 더 빠릅니다. – Fionnuala

답변

1

그런 다음 양식 수준 설정을 사용할 수 없습니다.

이 값이 일정한 경우 (필드가 인 경우 항상이 잠김), 다른 모든 컨트롤을 Locked = True으로 설정하기 만하면됩니다.

Private Sub SetEditable(EnableEdit As Boolean) 

    Dim ctl As Control 

    For Each ctl In Me.Controls 
     ' The main editable control types (add more if they occur on your form) 
     If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or _ 
      ctl.ControlType = acCheckBox Or ctl.ControlType = acSubform Then 

      If ctl.Name = "MySpecialDateField" Then 
        ' Always editable 
        ctl.Locked = False 
       Else 
        ctl.Locked = Not EnableEdit 
        ' If you want to provide a visual feedback: 
        ' 0 = Flat (locked), 2 = Sunken (editable) 
        ctl.SpecialEffect = IIf(EnableEdit, 2, 0) 
       End If 
      End If 

     End If 
    Next ctl 

End Sub 
+0

필드는 컨트롤이 아니라 컨트롤입니다. :) – Fionnuala

+0

제안 해 주셔서 감사합니다. Andre ... 나는 그것을 다른 몇개의 ime가 필요할 때마다 적어 놓았습니다 ... 현재 저는 각 분야를 개별적으로 잠급니다 ... 수작업이 많이 필요했지만 빨리해야했습니다. –