В классическом ADO в VB6 в наборе записей, поступающем из внешнего источника, скажем, Set Rs = Conn.Execute("SELECT * FROM Table")
, каждое поле имеет свойство 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
?