执行rs.MoveFirst然后 rs.MoveNext,结果EditMode从2变成了0
adOpenStatic、adLockOptimistic 打开一RecortSet, 增加、修改过记录后变成1或2,然后执行rs.MoveFirst后,再回到修改或新增的那条记录,EditMode变成了0.
这中间没有执行保存记录。 --------------------编程问答-------------------- EditMode 属性 (ADO):指示当前记录的编辑状态。
增加时,应该是2,表示你添加了一个新记录
编辑添加记录,则变为1,表示你正在编辑记录中
MoveFirst会触发一次update,编辑状态变为0
--------------------编程问答-------------------- 谢谢worldy
有什么办法使MoveFirst不触发一次update吗?
或者移动后EditMode状态保持不变? --------------------编程问答-------------------- 没试过,你使用UpdateBatch方式打开记录集看看,话说,你干嘛要让EditMode不变?想要表示该记录是编辑过?如果是这样,则应该可以使用status属性
Status 属性 (ADO)
指示有关批更新或其他大量操作的当前记录的状态。
返回值
返回下列一个或多个 RecordStatusEnum 值之和。
常量 说明
adRecOK 成功地更新记录。
adRecNew 记录是新建的。
adRecModified 记录被修改。
adRecDeleted 记录被删除。
adRecUnmodified 记录没有修改。
adRecInvalid 由于书签无效,记录没有保存。
adRecMultipleChanges 由于影响多个记录,因此记录未被保存。
adRecPendingChanges 由于记录引用挂起的插入,因此未被保存。
adRecCanceled 由于操作被取消,未保存记录。
adRecCantRelease 由于现有记录锁定,没有保存新记录。
adRecConcurrencyViolation 由于开放式并发在使用中,记录未被保存。
adRecIntegrityViolation 由于用户违反完整性约束,记录未被保存。
adRecMaxChangesExceeded 由于存在过多挂起更改,记录未被保存。
adRecObjectOpen 由于与打开的储存对象冲突,记录未被保存。
adRecOutOfMemory 由于计算机内存不足,记录未被保存。
adRecPermissionDenied 由于用户没有足够的权限,记录未被保存。
adRecSchemaViolation 由于记录违反现行数据库的结构,因此未被保存。
adRecDBDeleted 记录已经从数据源中删除。
--------------------编程问答--------------------
如果RecortSet中有1000条记录,现在将某些记录做了修改。
我需要在MoveFirst后,再检查哪些记录修改过,有什么好的办法 --------------------编程问答-------------------- 弄个字段做标记,是最简单的办法 --------------------编程问答-------------------- 这个我还真没有试过
通常情况下修改记录我都是用Sql语句Update。没有直接修改记录数值。
补充:VB , 数据库(包含打印,安装,报表)