2016-11-09 7 views
0

현재 프로젝트에서 작업 중 하나는 사용자의 Windows 로그인을 사용하여 MS Access의 로그인으로 사용하는 것입니다. 체계. 나는 전에 이것을 해본 적이 없지만 Access에서 테이블의 데이터를 가져 오는 로그인 화면을 설정했습니다. 나는 성공적으로 사용자의 Windows 로그인을 가져 오는 코드가 있지만 이후에 문제가 있습니다. 테이블 이름은 tblUser이고 사용자는 일반 사용자, HR 및 Admin입니다. 현재 테이블에서 나는 = 3역할 기반 액세스 제어는 MS 액세스에서 사용

The Login Screen: 
    Log On 
General User 
HR 
Admin 


Code that pulls the user information: 
Private Sub Form_Load() 
Stop 

Debug.Print Environ("UserName") 
Debug.Print Environ$("ComputerName") 

Dim strVar As String 
Dim i As Long 
For i = 1 To 255 
    strVar = Environ$(i) 
    If LenB(strVar) = 0& Then Exit For 
    Debug.Print strVar 
Next 
End Sub 

관리 아래는 내가 과거에 내 로그인 화면을 위해 만들어진 코드입니다, 일반 사용자 = 1, HR = 2로 번호를 부여 역할을합니다. 모든 것을 그려내는 것만 큼 똑같은 과정 인 것처럼 보이지만 확실하지는 않습니다. 아래 코드에서 할 수있는 일이 있습니까?

Private Sub btnLogin_Click() 
Dim rs As Recordset 

Set rs = CurrentDb.OpenRecordset("tblUser", dbOpenSnapshot, dbReadOnly) 

rs.FindFirst "UserName='" & Me.txtUserName & "'" 

If rs.NoMatch = True Then 
    Me.lblWrongUser.Visible = True 
    Me.txtUserName.SetFocus 
    Exit Sub 
End If 
Me.lblWrongUser.Visible = False 

If rs!Password <> Nz(Me.txtPassword, "") Then 
    Me.lblWrongPass.Visible = True 
    Me.txtPassword.SetFocus 
    Exit Sub 
End If 
Me.lblWrongPass.Visible = False 

If rs!EmployeeType_ID = 3 Then 

    Dim prop As Property 
    On Error GoTo SetProperty 
    Set prop = CurrentDb.CreateProperty("AllowBypassKey", dbBoolean, False) 

    CurrentDb.Properties.Append prop 

SetProperty: 
    If MsgBox("Would you like to turn on the bypass key?", vbYesNo, "Allow Bypass") = vbYes Then 
     CurrentDb.Properties("AllowBypassKey") = True 
    Else 
     CurrentDb.Properties("AllowBypassKey") = False 
    End If 

End If 

DoCmd.OpenForm "frmPersonal_Information" 
DoCmd.Close acForm, Me.Name 
End Sub 

나는 이것이 내가 성취하려는 것을위한 충분한 정보가되기를 바랍니다. 더 이상 필요한 정보가 있으면 알려주십시오. 고맙습니다.

+0

분할되지 않은 액세스의 로그인 화면은 농담입니다. 어쨌든, 모든 회원/역할 모델처럼 사용자 테이블, 역할 테이블, user_vs_roles 테이블이 있어야합니다. 마지막으로 로그인, 로그 아웃, 역할 할당, 로그인 한 사용자에 대한 사용자 역할 읽기/확인 방법 –

답변

0

역할이 Windows/Active Directory 로그인에 연결되어있는 경우 로그인 화면이 필요하지 않습니다. Windows의 로그온 사용자가 워크 스테이션을 합법적으로 사용하고 있다는 가정을해야합니다. 안전한 가정이 아닌 경우 IT 정책을 조사해야합니다.

액세스가 역할 및 사용 권한을 지원하지 않습니다. 어떤 사용자가 현재 로그온되어 있고 그 역할이 tblUser에서 이루어지면 :

  1. 백엔드와 특히 테이블에 대한 액세스를 잠급니다.
  2. Access에 고유 한 대부분의 사용자 인터페이스를 잠그고 프런트 엔드 양식 만 사용하도록 허용합니다.
  3. 프런트 엔드의 각 양식에 대해 VBA를 사용하여 시행하려는 정책이 모두 적용되도록하십시오.

궁극적으로 당신이 무엇을 하든지, Access를 잘 사용하는 방법을 아는 사람은 모든 종류의 잠금을 우회 할 수 있습니다. 캐주얼 한 호기심과 정직한 실수를 피하려면 SQL Server 나 MySQL과 같이 훨씬 견고한 DBMS와 Access를 결합해야합니다.

+0

데이터베이스를 Windows/Active Directory에 묶지 않으면 답장 @ SunKnight0을 보내 주셔서 감사합니다. 화면에서 기존 로그인으로 로그인 할 때 사용자 역할을 기반으로 다양한 시작 페이지가 표시됩니다. 데이터베이스를 관리 할 사람은 현재 엑셀 시트로 작업하고 있지만 더 많은 기능을 원하기 때문에 Access를 사용하여 연결된 위험을 이해합니다. – Orange56

+0

죄송합니다. 휴가 중이 었습니다. Windows 로그온을 사용할 필요는 없지만 더 많은 작업이 추가됩니다. 이 경우 다른 모든 것을 관리하는 것 외에 로그온 화면을 추가해야합니다. – SunKnight0