나눔터  
  HOME > 나눔터 > 묻고답하기 > 액세스
액세스
액세스에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황동준 (bogri2000)

추천:  4
파일:     180912.accdb (388KB) 조회:  2408
제목:   [RE]Dlookup 입니다 화일좀 수정 그리고 왜그런지 좀 알고싶어서요
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 액세스 버전(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. 자료실에 로그인예제도 참조해보세요.
 
[불량 게시물 신고]  
        
  

작성일 : 2018-09-12(11:48)
최종수정일 : 2018-09-13(19:19)
 


 ◎ 관련글

  제 목   작성자   날짜
Dlookup 입니다 화일좀 수정 그리고 왜그런지 좀 알고싶어서요 박현진 2018-09-12
[RE]Dlookup 입니다 화일좀 수정 그리고 왜그런지 좀 알고싶어서요 황동준 2018-09-12