|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 액세스 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >>
첨부화일을 보시면 로그인 하는 폼입니다. 기본적인것은 해결을 했는데, 로그인 할때 admin 레벨과 일반 유저 레벨을 구분해서 다른폼을 여는 폼입니다. 아무리 눈알 빠지게 봐도 잘 모르겠습니다.
한번 봐주시고 어디가 문제인지 알고싶습니다..
참고로 이 폼에서 로그인을 어드민과 일반 유저 마무리 하고 나면 임시 페스워드를 정해주는 방법과. 임시패스워드로 로그인을 하면서 패스워드 수정하는 코드를 펴보고자 합니다..
부탁 드리겠습니다.. 감사합니다
==============[박현진님 글에 대한 답변입니다]==============
1. {tblUser}' 의 [usersecurity] 는 텍스트 형식으로 'admin' 과 'user' 가 입력되어있습니다.
2. 관계에서 보시면 {tblusersecuritylevel} 에 [securityLevel]이 {tblUser} 의 [usersecurity] 와 대응 됩니다.
3. 로그인 폼의 vba에는 'UserLevel'이라는 변수가 정수형으로 선언되어있고,, 폼을 여는 부분에서도 유저레벨이 1인지 확인합니다.
4. 해당조건을 만족하려면 {tblUser}-{tblusersecuritylevel} 두 테이블을 조인하여 [securityID] 를 가져온 후 조건에 따라 폼을 열어야 합니다.
5. 현재 유저레벨을 가져오는 DLookup은 {tblUser}의 [usersecurity]의 문자데이터(admin 또는 user)를 가져오기때문에 조건이 맞지 않습니다.
6. 따라서 현재 vba의 요구조건데로 숫자형태의 유저레벨을 가져오려면 두
테이블을 연결한 쿼리를 이용하시던지, 아니면 아래와같이 중첩의 DLookup으로 {tblusersecuritylevel} 의 [securityID] 를 가져와야 합니다.
UserLevel = DLookup("securityID", "tblusersecuritylevel", "securityLevel='" & DLookup("[usersecurity]", "tblUser", "[userlogin] = '" & Me.txtloginid.Value & "'") & "'")
7. 'UserLevel'을 문자형으로 바꾸고, 폼을여는 조건도
If UserLevel="admin" Then
으로 바꾸시면 {tblUser} 테이블만으로도 로그인 하실수 있습니다.
8. 자료실에 로그인예제도 참조해보세요. |
|