2013-07-25 2 views
1

Microsoft Access (처음 사용하는 경우)가 처음인데 Microsoft Excel과 SQL의 매시업과 같은 것으로 생각해보십시오. 서버, 나는 후자에 대해 꽤 잘 알고있다. 내가하고 싶은 일은 새로운 행을 삽입 한 후에 필드 (예 : Category)를 읽기 전용으로 설정하는 것입니다. 이 Category 필드는 검색 실마리 (lookup vlue)이며 데이터 매크로는 작성시 해당 특정 카테고리가있는 해당 하위 테이블에 레코드를 생성합니다. 그리고 그것은 많은 어려움을 초래할 것이기 때문에 나는 창조 이후에 변화되기를 원하지 않습니다.Microsoft Access : 작성 후 열을 읽기 전용으로 만들기

양식에서이를 수행 할 수있는 방법이 있습니까? 사용자를 제한하는 방법은 무엇입니까? 아니면 이에 대한 해결 방법이 있습니까? 나에게 모든 옵션을 고려해 볼께, 고마워!

답변

1

양식의 현재 이벤트를 사용하십시오. 이 이벤트는 레코드가 활성 레코드가 될 때마다 발생합니다. 현재 레코드가 "새" 레코드 인 경우 해당 텍스트 상자를 사용하십시오. 그러나 기존 레코드의 경우 사용자가 저장된 값을 변경하지 못하도록 텍스트 상자를 비활성화하십시오. 텍스트 상자가 에게 txtFoo라는 경우

그래서, 당신의 Form_Current 절차는 ...

Private Sub Form_Current() 
    If Me.NewRecord = True Then 
     ' allow edit 
     Me.txtFoo.Enabled = True 
    Else 
     ' prevent edit 
     Me.txtFoo.Enabled = False 
    End If 
End Sub 

또는 더 간결 같은 일 ... 이런 일이 될 수

Private Sub Form_Current() 
    Me.txtFoo.Enabled = Me.NewRecord 
End Sub 

Enabled 속성 외에 Locked 속성도 고려하십시오. 어느 누구도 당신이 필요로하는 것을 할 수 없습니다. 또는 둘 다 사용할 수 있습니다. 다양한 조합을 테스트하여 원하는 것을보십시오.

+0

쿨! VBA는 매우 편리하지만 그렇게 먼 꿈입니다 ... – matt

1

사용자의 액세스를 제한하는 가장 쉽고 간단한 방법은 처음에 액세스 권한을 부여한 응용 프로그램의 특성에 따라 달라집니다.

상황 및 설명을 통해 매크로가 실제로 데이터 테이블의 업데이트/조작을 수행하고 있으며 사용자가 양식을 통해 해당 데이터에 액세스하는 것처럼 보입니까? 대부분의 응용 프로그램에서 양식의 전체 테이블을 표시 할 수 있지만 양식의 디자인 옵션에서는보기를 사용자 정의하고 사용자가 액세스 할 수 있기 때문에 이것은 이상적인 기술입니다.

사용자가 양식을 통해 데이터에 액세스하도록하는 기술을 사용하는 경우 VBA를 사용하지 않고도 테이블의 데이터를 조작 할 수있는 능력을 매우 쉽게 제한 할 수 있습니다. Access에 대한 경험이 제한적이라면 속성 메뉴를 사용하여 변경할 수있는 양식 옵션으로이 액세스를 수정하는 것이 더 쉬울 수도 있습니다. 이렇게하면 "has 모듈"속성을 갖도록 양식을 수정하지 않아도됩니다.

은 당신이 단순히

  1. 레이아웃보기 또는 디자인보기 중 하나로 전환
  2. 를 열고 속성 시트 (당신이 중 하나의 속성을 수정할 수 있습니다) 양식 열기 것이다 읽을 양식 필드를 만들려면 (디자인 리본의 속성 시트 단추를 통해)
  3. 읽기 전용 필드를 선택하십시오.
  4. 속성 시트의 데이터 탭에는 "잠김"이라는 속성이 있습니다.이 속성을 "예"로 전환하십시오.

이렇게하면 사용자가 필드를 변경할 수 없습니다.

(그 형태에서) 옵션 2 :

는 사용자가 (안 형태로) 일반 데이터 시트보기에서 테이블을 볼 만 할 경우에 당신은 "OpenTable에"를 사용하는 매크로를 통해이를 공개 할 수 (데이터베이스 개체 목록) 및 데이터 모드를 "읽기 전용"으로 설정하십시오. 중요 : 이렇게하면 사용자가 필드를 편집 할 수 없게됩니다 !! 다른 필드를 편집 할 수있게하려면이 옵션을 사용할 수 없습니다.

HansUp의 솔루션 :

  1. 선택 "양식"(새 사용자이기 때문에) 중요 당신이 그 양식의 속성 시트에서 다음과 같이 변경해야이 VBA를 사용하려면 을 주목해야 할 객체
  2. 변경 (속성 시트의 다른 탭)은 "모듈 포함"속성으로 "예"

이 또한 내가 양식 Current 속성에 도착하는 쉬운 방법을 찾을 수 없습니다합니다. 대안은 이벤트 탭의 "On Got Focus"를 사용하여 그가 제안한 VBA 절차를 통해 해당 텍스트 상자의 속성을 "사용 안 함"으로 설정할 수 있습니다.

관련 문제