드로우홀릭 더베이직

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

2019.05.07 02:33:33 조회 수 11488 추천 수 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을 임시 변수로 설정할 수 있는지 여부에 대해 문의드리고 싶습니다.


엮인글 '1'

https://www.td21.com/index.php?mid=qna&document_srl=13826&act=trackback&key=b52

2024.02.29 23:52

blocked drains oxford - oxford-drains.co.uk

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


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 31819
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 27973
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 23109
519 실무 액세스3_ 2강 업로드 서식 다운로드 버그발생 해결방법? file 3 창원바우 2024-04-13 36
518 모듈설치후 디버그결과 컴파일 오류 에러메시지가 나오는데 해결방법? file 4 창원바우 2024-04-12 30
517 VBA 환경설정 실습 첫 단계에서 에러 메시지가 나왔습니다 file 2 창원바우 2024-04-10 33
516 액세스 2021 초급 13강 차트에 필터 기능 넣기 에러 질문 file 3 창원바우 2024-03-26 122
515 쿼리를 만드는데 별표에 대해 요약을 계산할 수 없습니다라는 에러메시지 file 2 바우 2024-03-15 63
514 화면데이타 초기화 버튼 명령어 문의드립니다. file 2 맥스21 2024-03-08 133
513 엑세스 2013 무작정 다라하기 (비용보고 앱 만들기 질문) file 1 Ericsson 2024-03-06 85
512 엑세스에서 커서깜박임 등 속성변경이 가능한지 문의드립니다. 1 맥스21 2024-03-05 184
511 보고서에서 컨트롤(텍스트박스)의 갯수 제한을 풀수 있나요? file 2 1 로빈스 2024-02-12 594
510 매출조회 폼 활용 건 file 2 원죽 2024-01-28 465
509 엑세스 SQL 서버 문의 4 bob 2023-12-31 2551
508 하위 폼 만들기 질문 file 1 마라나타 2023-10-08 847
507 바코드출력 관련 추가 질의드립니다. file 3 맥스21 2023-10-06 1543
506 폼에 데이터 입력이 않되요 file 2 마라나타 2023-10-05 419
505 바코드를 출력하는 프로그램 문의드립니다.   file 2 맥스21 2023-10-02 1621
504 엑세스 VBA 교육은 없습니까? 1 룰루 2023-09-15 3720
503 하위폼 엑셀로 저장하기 1 황선철 2023-09-04 3515
502 이벤트프로시져 1 열심 2023-08-02 1009
501 선생님 최신강의는 언제 오픈되나요? 2 어질현 2023-07-27 1429
500 쿼리데이터 테이블로 동기화 질문 1 해랑이아빠 2023-06-30 2409


  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.