드로우홀릭 더베이직

액세스 임시 변수 설정 관련 문의드립니다.

2019.05.07 02:33:33 조회 수 37 추천 수 0

책 및 웹사이트 통해서 DB를 작성중입니다.


액세스 2013 무작정 따라하기의 로그인 폼은 암호 입력하는 양식이 없어서 외부 웹사이트를 보고 참조해서 해결하였습니다.


문의드리고 싶은 것은 현재 로그인 한 ID 값을 TempVars 명령어를 이용하여 임시변수로 처리하는 방법인데, 책에 나와있는 방법은 제가 구현한 로그인 방식과는 달라서 바로 쓰기는 힘들 것 같습니다.


VBA 코딩은 다음과 같습니다.

=========================================================================

Option Compare Database
Option Explicit

Private Sub CmdCancel_Click()

    '로그인 폼 닫기
    DoCmd.Close acForm, Me.Name
   
    '액세스 닫기
    DoCmd.CloseDatabase

End Sub

Private Sub CmdOk_Click()

    ' 레코드셋
    Dim rs As Recordset
   
    Set rs = CurrentDb.OpenRecordset("SELECT COUNT(*) AS RESULT FROM T_USER WHERE UserID='" & Me.txtID & "'")
   
    ' 해당 아이디가 없을 때
    If rs.Fields("RESULT") = 0 Then
        Me.lblStatus.Visible = True
        Me.lblStatus.Caption = "ID를 확인하여 주세요."
       
        ' 레코드셋 닫기
        rs.Close
       
        Me.txtID.SetFocus
        Exit Sub
    End If
    Me.lblStatus.Visible = False
   
    Set rs = CurrentDb.OpenRecordset("SELECT UserPW FROM T_USER WHERE UserID='" & Me.txtID & "'")
   
    ' 암호가 일치하지 않을 때
    If "" & rs.Fields("UserPW").Value <> "" & Me.txtPW Then
        Me.lblStatus.Visible = True
        Me.lblStatus.Caption = "암호를 확인하여 주세요."
       
        ' 레코드셋 닫기
        rs.Close
       
        Me.txtPW.SetFocus
        Exit Sub
    End If
    Me.lblStatus.Visible = False
   
    ' 레코드셋 닫기
    rs.Close
   
    ' 로그인 폼 닫기
    DoCmd.Close acForm, Me.Name
   
End Sub
====================================================================================

로그인에 사용한 table(T_USER)은 다음과 같습니다.

UserID

짧은 텍스트

UserPW

짧은 텍스트

UserName

짧은 텍스트

UserMail

짧은 텍스트

UserClass

짧은 텍스트



1. 로그인에 사용되는 정보는 UserID, UserPW이며, UserName을 임시 변수로 처리하여 작성자 및 작성일시에 대한 매크로를 만드려고 합니다. VBA에서 SetTempVars 명령어를 실행하는 방법과, 실행시 UserName을 임시 변수로 설정할 수 있는지 여부에 대해 문의드리고 싶습니다.


profile

윈드님

2019.05.07 10:57:54
*.165.242.137

안녕하세요.


Cap 2019-05-07 10-43-26-245.jpg

위의 그림처럼 임시 변수 할당을 해 주시면 됩니다.  

변수할당: TempVars!변수명 = 할당할 값

변수값 가져오기: TempVars!변수명


UserName을 임시 변수로 처리하려고 할 때는 위 방식을 사용하여 사용하시면 됩니다.

다른 방법은 '모듈 수준 변수'를 사용하는 것입니다.


위 코드를 보시면 gstrUserName 에 값을 할당하는 코드가 있지요?

아래 그림처럼 모듈 하나 추가한 후 거기에 변수를 public으로 선언하면 됩니다.

(폼에 선언하면 안됩니다. 모듈에 선언해야 다른 폼들에서 불러다 쓸 수 있습니다.)

Cap 2019-05-07 10-43-31-961.jpg

아래는 다른 폼에서 아까 할당한 변수 gstrUserName을 불러 오는 코드입니다.

Cap 2019-05-07 10-43-45-937.jpg


추가로.... 레코드셋에서 데이터 추출하실 때 OpenRecordset을 사용하시네요.

조금 더 편하게 호출 할 수 있습니다.

DLookup 함수를 사용하는 것입니다.

DLookup("데이터를 가져올 필드명", "테이블명", "조건")

주의할 점은 DLookup 함수에서 조건에 맞는 값이 없을 때 null을 반환하기 때문에  아래 식처럼 구현하면 오류가 발생 할 수 있습니다.

strUserID = DLookup("UserID", "T_USER", "UserID = '홍길동')


그래서 null 값을 원하는 값으로 치환해주는 nz 함수를 같이 사용합니다.

strUserID = nz(DLookup("UserID", "T_USER", "UserID = '홍길동'), "NoUser")

이 뜻은 DLookup 함수를 통해 값이 나오면 그 값을, null이면 "NoUser"를 반환하게 됩니다.

strUserID의 값이 "NoUser"가 나오면 해당 UserID는 없다는 뜻이 되겠지요?


이상입니다.

첨부

feroz

2019.05.10 00:35:55
*.149.140.150

친절한 답변 감사드립니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 FAQ: 어떤 과정을 수강하는 것이 좋을까요? 외 돌직구 2017-08-29 7993
공지 좋은 답변을 이끌어 내는 방법 돌직구 2017-07-14 7726
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 10457
336 setfilter 식이 정확히 입력되지 않았거나 너무 복잡해서 계산할 수 없습니다 망고 2019-05-16 7
335 조회 및 등록폼에 대한 질문있습니다. updatefile 2 feroz 2019-05-13 25
» 액세스 임시 변수 설정 관련 문의드립니다. 2 feroz 2019-05-07 37
333 MS Access 64bit 설치 관련문의 1 호수달 2019-05-01 47
332 폼의 텍스트상자 크기가 텍스트의 양만큼 자동으로 높이맞춤이 가능할까요? 1 watzza 2019-04-18 71
331 엑세스로 재고관리대장을 만들계획입니다. 2 똥구녕멍멍 2019-04-18 98
330 개발된 앱의 테이블 소스를 다른 사람이 열어볼 수 없게 하는 방법이 있나요? 2번째,,,문의 드립니다. 1 요술곰 2019-03-27 111
329 메크로 작성시 함수 setvalue 2 sky3300 2019-03-27 119
328 오피스365 사용하여 ACCESS 작성 배포 2 요술곰 2019-03-27 123
327 입력식에 유호하지 않는 날짜값이 있습니다. 2 sky3300 2019-03-26 89
326 엑셀자료를 액세스로 업로드 하는 방법 file 1 바다거북이 2019-03-24 118
325 동일한 필드 내의 문자열 데이터도 합칠 수 있을까요? 4 그루터기 2019-03-21 113
324 식이 정확히 입력되지 않았거나 너무 복잡해서 계산할 수 없습니다.... file 2 준사모 2019-03-20 108
323 로그인과 암호 fmc후세 2019-03-12 114
322 모바일로 강좌를 보려면? 1 나도한판 2019-02-27 155
321 액세스 쿼리 작성 문의 file 1 우진이 2019-02-24 149
320 적절한 레코드 수 1 준사모 2019-02-21 148
319 DoCmd.OpenReport의 조건식에서 하위폼 필드 불러와서 인쇄할 수 있나요? file 3 하영감성원 2019-02-14 156
318 보고서 엑셀로 내보내기 오류 질문 file 5 허수아비 2019-02-10 177
317 액세스의 테이블에 하이퍼링크 속성의 열을 만들고 데이터를 주었는데 1 버저비터 2019-02-06 142


  주소  05854 서울시 송파구 법원로 128 문정 SK V1 C동 1314호 ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2018-서울송파-1565 호
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.