在VB6经典ADO制作记录集中设置OriginalValue属性

时间:2011-07-19 19:48:31

标签: vb6 ado recordset

在VB6中的经典ADO中,在来自外部源的记录集中,例如Set Rs = Conn.Execute("SELECT * FROM Table"),每个Field都有OriginalValue属性,因此在更新记录后您仍然可以看到每个领域的原始价值是什么。

但是,我正在使用如此构建的记录集:

Set Rs = New ADODB.Recordset
Rs.Fields.Append "Name", adVarChar, 100, adFldMayBeNull
Rs.Open
Rs.AddNew
Rs.Fields("Name").Value = "rudolph"
Rs.Update

但是在此记录集中,即使我更改字段的值,OriginalValue属性也会保持空白。除了将整个记录集抛出到XML流,修改XML以及重新创建记录集以使OriginalValue具有我想要的值之外,还有什么方法吗?

我正在处理数据更改的一些预览,其中我有两个记录集,一个表示当前值,另一个表示原始值。当需要比较以查看某些内容是否已发生变化时,有两个对象而不是一个具有两个属性的对象,这是一种痛苦。

我知道记录集中有元数据,关于它的源表是什么,它是否可更新,主键是什么,以及提供程序支持的属性类型(例如NextRecordset),但其中一些属性可能很难在我正在使用的伪造记录集中访问。

此外,是否需要某种锁定设置,例如adLockBatchOptimistic

1 个答案:

答案 0 :(得分:1)

替换

rs.Update

rs.UpdateBatch