2017-11-13 6 views
0

do while 루프를 사용하여 결과를 얻고 싶습니다. 그러나, 나의 결과는 단 하나 개의 기록을 제공합니다 ...VBA에 액세스 :`do while` 루프를 사용하여 레코드 세트 업데이트

는 난 할 노력하고있어입니다 :

  • 확인을 기록

    1. 이동 (레코드 세트) rs을 통해 rs에 값 인 경우 rs2
    2. 동일 그렇다면, 다음 레코드로 rs2
    3. 이동에 rs에서 username 복사

      Do While Not rs.BOF         ' No of records in rs  
          Do While Not rs2.EOF        ' No of records in rs2   
           If Trim(rs2![pic_no]) = Trim(rs![pic]) Then    
            rs![UserID] = rs2![NEW_USER] 
            rs2.MoveNext 
            rs.Update 
           Else 
            rs2.MoveNext 
            rs.Update  
           End If 
          Loop   
      
          rs.MovePrevious 
          rs.Update 
      Loop 
      
  • 답변

    1
    Do While Not rs.EOF         ' No of records in rs 
        Do While Not rs2.EOF        ' No of records in rs2 
         If Trim(rs2![pic_no]) = Trim(rs![pic]) Then 
          MsgBox rs!UserID 
          rs.Edit 
          rs.Fields("UserID") = rs2![NEW_USER] 
          rs.Update 
         End If 
        rs2.MoveNext 
        Loop 
    rs2.MoveFirst 
    rs.MoveNext 
    Loop 
    
    rs.Close 
    rs2.Close 
    Set rs = Nothing 
    Set rs2 = Nothing 
    
    End Sub 
    

    그런데 왜 당신은 단순히 업데이트 문을 사용하지 않는? TableUser (rs에서 사용할 테이블)와 TableNewUser (rs2에서 참조하는 테이블)라는 두 개의 테이블이 있다고 가정 해보십시오. 업데이트 진술은 다음과 같습니다.

    UPDATE TableUser, TableNewUser 
    SET TableUser.UserID = TableNewUser.NEW_USER 
    WHERE TableUser.pic = TableNewUser.pic_no; 
    

    훨씬 쉽습니다. 이 업데이트 문을 VBA 코드에 넣을 수도 있습니다 (필요/이유가있을 경우).

    +0

    정말로 도움 주셔서 감사합니다. update 문은 훨씬 쉽습니다. 감사합니다 – alan

    +0

    스택 오버플로에 오신 것을 환영합니다, 앨런! 덧붙여 말하자면, 오늘은 Microsoft Access의 25 번째 생일이 버전 1.0이 1992 년 11 월 13 일에 릴리스 된 이래로 합류하기 좋은 날을 골랐습니다 :-) – ashleedawg