Ms access 在Access VBA中是否隐含rs.MoveFirst?

Ms access 在Access VBA中是否隐含rs.MoveFirst?,ms-access,vba,ms-access-2010,recordset,Ms Access,Vba,Ms Access 2010,Recordset,我有一些代码在记录集的列中循环,rs。如果我包括rs.MoveFirst与否,代码的工作方式似乎是相同的 如果您没有显式地包含它,是否隐式地包含了.MoveFirst,或者我缺少了细微的区别?来自: 打开记录集时,第一条记录为当前记录,BOF属性为False。如果记录集不包含任何记录,则BOF属性为True,并且没有当前记录 如果使用MoveFirst或MoveLast时第一条或最后一条记录已经是当前记录,则当前记录不会更改 基于此,您可以看到,MoveFirst在您的RecordSet中有非零

我有一些代码在记录集的列中循环,
rs
。如果我包括
rs.MoveFirst
与否,代码的工作方式似乎是相同的

如果您没有显式地包含它,是否隐式地包含了
.MoveFirst
,或者我缺少了细微的区别?

来自:

打开记录集时,第一条记录为当前记录,BOF属性为False。如果记录集不包含任何记录,则BOF属性为True,并且没有当前记录

如果使用MoveFirst或MoveLast时第一条或最后一条记录已经是当前记录,则当前记录不会更改


基于此,您可以看到,
MoveFirst
在您的
RecordSet

中有非零个记录的场景中是多余的。MoveFirst方法的使用几乎没有显著差异。当打开记录集时,编译器尝试加载整个记录集,但是在大型数据集上,它只加载最小的记录,在此过程中,它将加载整个记录集。然而,不管记录返回的距离有多远,都会将“游标”(本身)默认为第一条记录


只有使用.MoveLast移动到最后一条记录,然后使用.MoveFirst返回到第一条记录时,才会出现性能差异。然后必须加载所有记录,然后返回,这时您将达到性能

我认为编译器不会尝试加载任何内容。DAO/ADO将加载记录,这取决于打开记录集时指定的游标类型。如果有快照,则将加载所有记录;如果使用动态光标打开记录集,则仅加载当前记录。