如何在记录集中使用两个循环来更新数据

时间:2018-07-26 18:16:45

标签: vba access-vba

我有两个表,分别具有声明数据和用户名
 Tblimport-包含10个索赔编号和。 tbl_Settings-包含3个用户名 。我想将这10个声明分配给3个用户
条件:同一声明不应分配给不同的用户,每个人都应平等地获得声明。 我打算使用带有两个记录集的两个循环。 但是在使用do循环时出现问题,因为每个

都具有相同的声明ID
strqry = "Select [claimId] from Tblimport"
strqry2 = "Select [username] from tbl_Settings"
rs1.Open strqry2, cn1, adOpenStatic
rs2.Open strqry, cn2, adOpenStatic


rs2.MoveFirst
Do While Not rs2.EOF
If rs1.EOF Then
        rs1.MoveFirst
    End If

    claim = CStr(rs2![ClaimID])
    User = CStr(rs1![UserName])

    Debug.Print claim & "-" & User
        rs1.MoveNext
        If rs1.EOF Then
        rs1.MoveFirst
        End If

    rs2.MoveNext
Loop

我得到的输出

100021245-shp  
100023633-abc  
114552236-kjh    

User = CStr(rs1![UserName])循环的第4次显示运行时错误94,无效的null使用

Tblimport
100021245
100023633
114552236
121223333
122333444
112123345
111223344
112344543
322344455

tbl_设置
shp
abc
kjh

1 个答案:

答案 0 :(得分:2)

对于ClaimIDUserId值,似乎您的代码记录集不匹配。也许我只是感到困惑。

无论如何,我认为您想要的是遍历ClaimID值,对于每个依次获取“ next” UserId的值。提取了“ {last}” UserId之后,再次移至第一ClaimID

对不起,我想不出如何更清楚地描述这一点。但是归根结底是修改了您的循环策略。

rs2.MoveFirst
Do While Not rs2.EOF
    'Claim = CStr(rs1![ClaimID])
    'User = CStr(rs2![UserId])
    Claim = CStr(rs2![ClaimID])
    User = CStr(rs1![UserId])

    Debug.Print Claim & "-" & User

    rs1.MoveNext
    If rs1.EOF Then
        rs1.MoveFirst
    End If
    rs2.MoveNext
Loop