我有两个具有相同主键的记录集:两个列的组合称为'item_no'和'Order_id'.....两个记录集都有这个主键(组合)和其他不同的列...
现在,我想在两个记录集中排序(那些)行,以便记录的位置(具有相同的主键值)应该相同...
例如,考虑rset1和rset2 ...将上述列作为主键组合,rset1中的row5具有“item_no”和“order_id”的值为 2 300 rset2中的第8行的值为 2 300 (相同)....
1)现在我想将row5(在rset1中)带到位置8,使两个记录在记录集中的位置相同
2)如果在两个rsets中都没有找到共同的记录......那么我将把它留在那个位置(在rset1中)为相应的行(在rset2中) [意思是在rset2中记录的是rset1中没有相应的记录
总是确保没有:rset2中的记录>在rset1中......
你可以帮助如何使用VB6.0中记录集中的记录对齐,因为我将这些记录集绑定到Excel以便并排显示?
VB6.0中的任何内置方法(做对齐或任何事情)
答案 0 :(得分:1)
VB6中没有inbuild方法可以做到这一点(不是我所知道的),但是,自己做起来很容易。
你需要做的是创建两个错误的记录列表,一旦你拥有它们,就可以将它们吐出来(如果你需要csv文件,excel,ms访问)。 CAVEAT:必须按主键对recordSets进行排序才能工作。
这段代码按顺序遍历两个记录集,创建带有空格或链接到记录的有序列表(虽然它看起来很像VB代码,但认为这是伪代码,逻辑是正确的,它不会编译)< / p>
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim rs1List As Collection
Dim rs2List As Collection
REM code here to initialise the collections to new Collection and fill the record sets
Do While Not rs1.EOF And Not rs2.EOF
If rs1("PKey") = rs2("PKey") Then
rs1List.Add rs1.Bookmark
rs2List.Add rs2.Bookmark
rs1.Movenext
rs2.Movenext
ElseIf rs1("PKey") < rs2("PKey") Then
rs1List.Add rs1.Bookmark
rs2List.Add Nothing
rs1.Movenext
ElseIf rs1("PKey") > rs2("PKey") Then
rs1List.Add Nothing
rs2List.Add rs2.Bookmark
rs2.Movenext
End If
Loop
Do While Not rs2.EOF
rs1List.Add Nothing
rs2List.Add rs2.Bookmark
rs2.Movenext
Loop
Do While Not rs1.EOF
rs1List.Add rs1.Bookmark
rs2List.Add Nothing
rs1.Movenext
Loop
假设主键字段是PKey,而.Bookmark是一种可用于直接转到该记录的方法(如果可用则可以使用序号位置)。
希望这有帮助
修改强>
刚刚更改了最后两个循环中的一些位,它们不太正确。