【问题标题】:Access VBA: using `do while` loop to update a recordset访问 VBA:使用 `do while` 循环更新记录集
【发布时间】:2021-04-07 10:25:32
【问题描述】:

我想使用do while 循环获得结果。 但是,我的结果只给出了一条记录...

我想做的是:

  1. 遍历rs(记录集)记录
  2. 检查rs 中的值是否等于rs2
  3. 如果是这样,请将usernamers 复制到rs2
  4. 移动到下一条记录

    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
    

【问题讨论】:

    标签: vba ms-access updates do-while


    【解决方案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 代码中(如果需要/理由这样做)。

    【讨论】:

    • 非常感谢您的帮助。更新语句要容易得多。谢谢
    • 欢迎来到 Stack Overflow,艾伦!顺便说一句,您选择了加入的好日子,今天是 Microsoft Access 自 1992 年 11 月 13 日发布 1.0 版以来的 25 岁生日。:-)
    猜你喜欢
    • 2023-03-10
    • 2011-02-04
    • 1970-01-01
    • 2023-03-20
    • 2013-07-09
    • 2016-01-03
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多