我有两个表,分别具有声明数据和用户名
Tblimport-包含10个索赔编号和。
tbl_Settings-包含3个用户名
。我想将这10个声明分配给3个用户
条件:同一声明不应分配给不同的用户,每个人都应平等地获得声明。
我打算使用带有两个记录集的两个循环。
但是在使用do循环时出现问题,因为每个
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
答案 0 :(得分:2)
对于ClaimID
和UserId
值,似乎您的代码记录集不匹配。也许我只是感到困惑。
无论如何,我认为您想要的是遍历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