2013-08-15 2 views
0

누군가 내가 이것을 도와 주시면 감사하겠습니다.일부 사용자에 대한 데이터베이스 액세스를 제한하십시오. (MS Access 2007)

저는 Access에 처음 왔고 상사가 저에게 보험 팀에서 일하는 도구를 만드는 프로젝트를 제공했습니다. 이 프로젝트의 대부분은 끝났지 만, 상사가 데이터베이스 수정 및 업데이트를 원한다. (예 : 한 명 이상의 사람이 수정할 수 있음)이 도구는 여러 가지 용도로 사용되기 때문에 목적 상, 그녀는 나머지 부서 (50 명 이상)가 작업을 수행하는 버튼 등이있는 특정 양식에만 액세스 할 수 있기를 원합니다.

지금까지이 데이터베이스에는 3 개의 연결된 테이블 (모든 데이터 보유), 쿼리, 보고서, 유니온 쿼리 및 테이블 및 폼 3 개가 있습니다. 대부분의 사람들은 양식을보고 양식보기에서만 사용하지만 내 팀 구성원은 데이터를 계속 편집해야하기 때문에 원하는대로 할 수 있습니다.

누구부터 시작할 지에 대한 힌트가 있습니까? 프로그래밍은 내 차 한잔이 아니므로 약간의 참고 자료 나 도움이 정말 감사 할 것입니다!

+0

권한이없는 사용자가 저장된 데이터를 변경하지 못하도록하고 확실한 정교한 사용자조차도 우회 할 수없는 보안 전략이 필요합니까? 아니면 그러한 사용자가 원하지 않는 일을하는 것이 불편한 보안 양식에 정착 할 수 있습니까? – HansUp

+0

나는 전자를 말할 것입니다. 나는 (3-4) 명의 사용자 만이 권한과 같은 관리자 권한을 갖고 싶어한다. 하지만 나머지는 내가 로그인하기를 원합니다. 그런 다음 로그인하기 만하면 폼에있는 버튼을 통해 쿼리/보고서를 실행할 수 있습니다. 나는 그들이 테이블을 보거나 편집하는 것을 원하지 않는다. – instackov

+0

그런 다음 db 엔진을 사용하여 해당 보안 수준을 적용해야한다. 응용 프로그램 수준 (VBA, 양식 속성 등)에서 구현하는 보안 조치는 모두 쉽게 패할 수 있습니다. – HansUp

답변

1

파일을 누른 다음 옵션을 누르고 현재 데이터베이스를 선택하면 액세스 데이터베이스를 열 때마다 특정 양식이 강제로 표시 될 수 있습니다. 또한 사용자가 전체 데이터베이스 컨텐트를 탐색 할 수있는 기능을 제거 할 수 있습니다. 네비게이션 바와 메뉴 등을 가져갈 수도 있습니다. 나는 이것을 잠시 동안 해왔다. 그래서 여기에 몇 가지 조언이있다. 액세스 파일의 모든 양식에 대한 단추가있는 기본 메뉴 양식이 있어야합니다. 사용자가 데이터베이스를 열면 해당 주 메뉴 양식을 볼 수 있습니다. 거기에서 버튼을 클릭하면 필요한 요구 사항을 해결할 수있는 양식으로 이동할 수 있습니다.

Stackoverflow 내가 코멘트를 게시 할 수 없습니다, 그래서 여기에 내가 말할 예정였다. 액세스하려는 사용자는 데이터베이스를 여는 동안 교대 상태를 유지하게 할 수 있습니다. 그렇게하면 데이터베이스의 "admin"처럼 데이터베이스를 열게됩니다. 교대조를 지키면 편집 할 수 있습니다.

+0

하지만 모두를 위해 그것을 숨길 수는 없겠지요? 나는 몇몇 사람들이 나 자신과 같은 접근을하지 못하게했다. p.s 이러한 접근 방식으로 사용자는 자신이 언급 한 단계를 반복 할 수 없으며 모든 것을 숨김 해제 할 수 있습니까? – instackov

+0

이 답변을 당신의 질문에 대한 답변 이었습니까? –

0

나는 테이블을 통해 사용자에게 특정 "보안 수준"을 할당하고 로그인 화면을 통해 보안 수준을 확인했습니다. 그런 다음 폼이 열려있을 때마다 사용자 보안 수준의 DLookup을 수행 한 다음 사용자가 폼에 대한 읽기, 쓰기 또는 읽기/쓰기 액세스 권한을 가지고 있는지 확인할 수 있도록 로그인 화면을 숨 깁니다 (닫지 않음). 동일한 논리를 기반으로 양식의 단추를 숨길 수도 있습니다.

2007 년부터 Access에서는 기본 보안을 제거했으나 어쨌든 꽤 비효율적이었습니다.

+0

Access 2007을 사용하고 있습니다! 하지만 당신이 언급 한 것과 같은 줄을 생각하고있었습니다. 사용자 이름과 암호 및 예/아니요 필드가 'IsAdmin'이라는 표가있는 테이블을 만들었습니다. DLookup을 사용하면 사람이 admin인지 파악하여 액세스 권한을 할당 할 수 있습니다. 그러나이 코드를 작성하는 데 문제가 있습니다. 로그인 버튼에 다음을 추가해도 도움이되지 않았습니다. Me.AllowEdits = DLookup ("IsAdmin", "RATusers", "[UserID] ="& Me.cboUser.Value) 생각이 있습니까? – instackov

+0

그 것이 작동해야합니다. Me.cboUser.Value가 예상 한 것을 반환하는지 확인 했습니까? 또 다른 옵션은 다음과 같이 If/Then/Else를 시도하는 것입니다. xxAdmin = DLookup ("IsAdmin", "RATusers", "[UserID] ="& Me.cboUser.Value). 그런 다음 If/Then/Else를 다음과 같이합니다. If xxAdmin = -1 Then Me.AllowEdits = True Else Me.AllowEdits = False EndIf. 내가 할 때 모든 개체의 Enabled 속성을 True 또는 False로 설정했지만 두 옵션 모두 실행 가능합니다. –

+0

어떻게 확인할 수 있습니까? cboUser는 로그인 화면의 콤보 상자이므로 드롭 다운을 사용하여 올바르게 로그인 할 수 있기 때문에 제대로 작동하는 것으로 알고 있습니다. 유효한 사용자 이름/pw 조합을 확인하는 로그인 명령 단추 내에서 IF 문을 사용해야합니까? 아니면 로그인 양식의 이벤트 처리기에 입력해야합니까? 예 : Form_Current()의 경우 xxAdmin .....? – instackov