Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 对齐记录集中的对应行_Excel_Vb6_Recordset - Fatal编程技术网

Excel 对齐记录集中的对应行

Excel 对齐记录集中的对应行,excel,vb6,recordset,Excel,Vb6,Recordset,我有两个具有相同主键的记录集:由两列组成,分别称为“item\u no”和“Order\u id”。。。。。两个记录集都有这个主键(组合)和其他不同的列 现在,我想对两个记录集中的(那些)行进行排序,以便记录的位置(具有相同的主键值)应该相同 考虑RSET1和RSET2…将上述列作为主键组合,并且rset1中的第5行将“项目编号”和“订单id”的值设置为2300 rset2中的第8行的上述值为2300(相同) 1) 现在我想将行5(在rset1中)移到位置8,这样两条记录在记录集中的位置相同 2

我有两个具有相同主键的记录集:由两列组成,分别称为“item\u no”和“Order\u id”。。。。。两个记录集都有这个主键(组合)和其他不同的列

现在,我想对两个记录集中的(那些)行进行排序,以便记录的位置(具有相同的主键值)应该相同

考虑RSET1和RSET2…将上述列作为主键组合,并且rset1中的第5行将“项目编号”和“订单id”的值设置为2300 rset2中的第8行的上述值为2300(相同)

1) 现在我想将行5(在rset1中)移到位置8,这样两条记录在记录集中的位置相同

2) 如果在两个资源集中都找不到通用记录。。。然后,我将其blnk保留在对应行(rset2)的tht位置(在rset1中)[意味着对于rset2中的记录,在rset1中没有对应的记录]

它总是确保rset2中的记录数>rset1中的记录数

当我将这些记录集绑定到Excel以并排显示时,您能帮助我如何在VB6.0中对齐记录集中的记录吗


VB6.0中的任何内置方法(进行对齐或任何精简)?

VB6中没有内置方法来执行此操作(据我所知不是这样),但是,您可以自己完成

你需要做的是创建两个虚假的记录列表,一旦你有了它们,你就可以随心所欲地把它们吐出来(到csv文件,到excel,到ms access)。 注意:记录集必须按主键排序才能工作

<此代码按顺序记录两个记录集,创建一个带有空白或链接到记录的有序列表(虽然它看起来非常像VB代码,认为这是伪代码,逻辑正确,不会编译)

Dim rs1作为记录集
Dim rs2作为记录集
Dim RS1作为集合列出
Dim RS2作为集合列出
REM代码用于将集合初始化为新集合并填充记录集
不使用rs1.EOF和rs2.EOF时请勿使用
如果rs1(“PKey”)=rs2(“PKey”),则
rs1列表。添加rs1。书签
rs2List.Add rs2.Bookmark
rs1.下一步
rs2.下一步
如果rs1(“PKey”)rs2(“PKey”),则
RS1列表。不添加任何内容
rs2List.Add rs2.Bookmark
rs2.下一步
如果结束
环
而不是rs2.EOF
RS1列表。不添加任何内容
rs2List.Add rs2.Bookmark
rs2.下一步
环
而不是rs1.EOF
rs1列表。添加rs1。书签
rs2List。不添加任何内容
rs1.下一步
环
假设主键字段是PKey,而.Bookmark是一种可以直接转到该记录的方法(如果可用,可以使用序号位置)

希望这有帮助

编辑


刚刚更改了最后两个循环中的一些位,它们不太正确。

结果集是否来自同一个SQL产品?(哪一个?)有可能使用SQL在两个结果集之间创建一个完整的外部联接吗?或者左外部联接和右外部联接的并集吗?+1在我看来就像是经典的合并算法:)就是这样,我在二十年前的大学里用过它,完全忘记了它的名字(事实上,我甚至忘记了它的名字)微不足道的点:“做而不做EOF”通常更像“EO直到EOF”。鲍伯:我有一段很长的C&C++历史,我的脑子表达循环逻辑为“while”。另一个技巧是,当你的眼睛习惯于其中一个而看到另一个时,“直到=而不是”,关联也是正确的,“而=直到不是”。后来的家伙:)
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