드로우홀릭 더베이직

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

2019.05.07 02:33:33 조회 수 10761 추천 수 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=21a

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 31088
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 27403
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 22917
336 안녕하세요 union 쿼리 사용시 질문이 있습니다ㅜㅜ file 2 망고 2019-06-04 2716
335 조회폼에서 자꾸 멈춥니다. 2 Michael 2019-05-31 5616
334 실무 액세스 3 재수강 문의 1 ltsky79 2019-05-22 2823
333 setfilter 식이 정확히 입력되지 않았거나 너무 복잡해서 계산할 수 없습니다 4 망고 2019-05-16 4749
332 조회 및 등록폼에 대한 질문있습니다. file 2 feroz 2019-05-13 2880
» 액세스 임시 변수 설정 관련 문의드립니다. 2 1 feroz 2019-05-07 10761
330 MS Access 64bit 설치 관련문의 1 호수달 2019-05-01 2141
329 폼의 텍스트상자 크기가 텍스트의 양만큼 자동으로 높이맞춤이 가능할까요? 1 watzza 2019-04-18 3460
328 엑세스로 재고관리대장을 만들계획입니다. 2 1 똥구녕멍멍 2019-04-18 31441
327 개발된 앱의 테이블 소스를 다른 사람이 열어볼 수 없게 하는 방법이 있나요? 2번째,,,문의 드립니다. 1 요술곰 2019-03-27 1931
326 메크로 작성시 함수 setvalue 2 sky3300 2019-03-27 8288
325 오피스365 사용하여 ACCESS 작성 배포 2 요술곰 2019-03-27 7123
324 입력식에 유호하지 않는 날짜값이 있습니다. 2 sky3300 2019-03-26 24159
323 엑셀자료를 액세스로 업로드 하는 방법 file 1 바다거북이 2019-03-24 4315
322 동일한 필드 내의 문자열 데이터도 합칠 수 있을까요? 4 그루터기 2019-03-21 1938
321 식이 정확히 입력되지 않았거나 너무 복잡해서 계산할 수 없습니다.... file 2 준사모 2019-03-20 6942
320 로그인과 암호 fmc후세 2019-03-12 1935
319 모바일로 강좌를 보려면? 1 나도한판 2019-02-27 1977
318 액세스 쿼리 작성 문의 file 1 우진이 2019-02-24 3029
317 적절한 레코드 수 1 준사모 2019-02-21 4668


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