编辑:HansUp的解决方案非常有效,对于将来使用它的人来说,一定要确保在使用多个索引之后删除它们。在我的桌子上,它们几乎是数据库的两倍。我最后使用的一个更好的方法是使用工作区对象创建一个临时db,并预先形成那里的所有处理,只将最终数据带回实际数据库。
希望有办法做到这一点,但我还没有看到任何方法来控制.Seek从哪里开始查找索引(除了使用<来结束时开始)。
我需要比较两个表,以找到薪酬调整的原始记录。问题是,在他们所有伟大的计划中,我们SAP模块的程序员决定从薪资计算的输出中删除唯一的记录标识符,让我来反向设计调整的来源。
我已经能够使用.seek匹配大多数记录,当结果可以追溯到多个记录之一时就会出现问题(为了修复原始代码中的错误,他们被迫执行了数十次校正薪资运行)。
我希望做的是使用一个.seek,测试一个调整变量(已经将记录支付调整为0),如果是的话,.seek再次到索引中的下一个匹配记录。
有办法规定.seek从哪里开始比较索引条目吗?我的后续搜索能在当前匹配之后开始吗?
我知道我可以在最初的.FindNext之后使用.seek,但是希望避免使用.find组的方法,因为它们的特性比较慢。
有什么想法吗?
发布于 2016-05-03 19:13:24
Recordset.Seek找到第一个与您所寻找的值相匹配的记录(如果有),并将该记录作为当前记录。
没有办法告诉Seek的第二个记录匹配.或者除第一条匹配记录之外的任何记录。
但是,由于您的Recordset是由控制索引(首先需要使用Seek )排序的,所以使用Recordset.MoveNext移到下一个记录,并检查该记录的索引字段是否仍然匹配您的Seek值。
您可以重复MoveNext并检查索引字段,直到该字段的值不再匹配您的Seek值为止。在这一点上,你知道你检查了所有匹配的记录。
如果您基于<或<=寻找某种值,这意味着Seek从索引的末尾开始,这几乎是完全相同的交易。只需使用MovePrevious而不是MoveNext
https://stackoverflow.com/questions/37010173
复制相似问题