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

작성자:  

 드리뭉 (efreecom)

추천:  0
파일:     조회:  720
제목:   IIF조건에 대한질문입니다...
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

1. 액세스 버전(95,97,2000,2002):2000
2. 윈도우즈의 버전(win95,win98,winME,winNT,win2000,winXP):
3. CPU (486,PentiumI/II/III/IV...):
4. RAM (32,64,128,256,512MB,1G...): 

* 아래줄에 질문을 작성하세요 >> 


Private Sub cmdOK_Click()
Dim strCriteria As String

    ' 클론에서 먼저 찾아보고 있으면 북마크를 일치시켜주면 된다.
    ' 물론 직접 레코드셋을 찾아도 된다. 그렇지만 클론을 이용하는 것이 좋다.
    
    Set rst = frmCaller.RecordsetClone ' DAO.Recordset로 정의된 개체를 이용하는 것이 좋다.
                                ' Contextural Help를 이용할 수 있으므로....
                                
    If Not IsNull(Me.txtNameWanted) Then
        strCriteria = "LastName = '" & Me.txtNameWanted & "'"
    End If
    
    If Not IsNull(Me.txtSearchRegion) Then
        strCriteria = IIf(strCriteria = "", "", " AND ") _
            & "Region = '" & Me.txtSearchRegion & "'"
    End If
    
    If strCriteria = "" Then
        MsgBox "조건을 입력하십시오.", vbInformation
        Exit Sub
    End If
    
    rst.FindNext strCriteria
    If Not rst.NoMatch Then
        ' 북마크를 일치시켜주면 해당 레코드로 이동된다.
        frmCaller.Recordset.Bookmark = rst.Bookmark
    Else
        MsgBox "더 이상 없습니다.", vbInformation
        rst.Bookmark = frmCaller.Recordset.Bookmark
    End If
    
End Sub


위 코드에서

strCriteria = IIF(strCriteria = "", "" " AND ") _
     & "Region = '" & Me.txtSearchRegion & "'"

IIF을 썼는데 strCriteria="", 이것이 조건이잖아요 그런데 strCriteria가 바로 위의 조건에의해 참인경우 
? - "LastName ='" & me.txtNameWanted & "'" = ""이라면이라고 되잖아요 이것을 어떻게 해석해야 하는가요?
그리고 이것이 참이면 ""이고 거짓이면 " AND "하고 뒤의 & "Region = '" & Me.txtSearchRegion & "'"으로 이어지잖아요


? - 그리고 frmCaller이 폼변수로 정의 된 것인데 set rst = frmCaller.RecordsetClone로 됐는데
이경우 frmCaller은 어떤 역할을 하나요? set rst = me.RecordsetClone 의 경우는 me가 현재의 폼을 의미하잖아요?
근데 frmCaller은 뭘의미하나요?
 
[불량 게시물 신고]  
Crocii디버깅 방법을 알려 드리죠..

코드창의 왼쪽에 세로 회색선이 하나 있습니다..
여기를 클릭하면 중단점이 생깁니다..

Private Sub cmdOK_Click() <- 여기 왼쪽 부분을 클릭하십시요.

커맨드버튼을 클릭하십시요..

VBE창이 나올겁니다..

F8 을 한번씩 클릭하십시요..

변수명 위에 마우스를 슬쩍 올려 보십시요..

예를 들면 strCriteria 위에 마우스를 올려 보십시요..

F8로 코드를 진행시키면서 변수값이 어떻게 변하는가 보십시요..

직접실행창에 
?strCriteria 엔터
를 쳐도 됩니다.. 변수값이 아래줄에 보일 겁니다..

지역창을 열어 놓아도 좋습니다.. 마우스 안올려놔도 변수값이 보이지요.. 특히 배열변수일때 좋습니다..
10-25 (19:16)
삭제 ■신고
드리뭉감사합니다.
좋은하루되세요
10-25 (19:58)
삭제 ■신고
드리뭉두번째 질문에 대해서도 답글부탁드려요10-25 (19:59)
삭제 ■신고
Crocii변수명등을 보니 범용적 코드로 사용하려고 한것 같군요..

저폼의 Open등의 이벤트에.. 
Set frmCaller=me <- 요런식의 구문이 없던가요?
아니면.. 저 프로시져의 첫부분에..
Set frmCaller=activeform
이 있거나.. (생략되었을 수도..)

이런식으로 되어 있다면..
저 코드를 폼마다 그냥 복사해 줘도 오류없이 작동될 겁니다.
10-25 (21:15)
삭제 ■신고
드리뭉set frmcaller = screen.activeform으로되어 있네요

감사합니다 ...
10-26 (19:44)
삭제 ■신고
        
  

작성일 : 2004-10-25(18:58)
최종수정일 : 2004-10-25(18:58)