Установить свойство OriginalValue в VB6 classic ADO. - PullRequest
2 голосов
/ 19 июля 2011

В классическом 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?

1 Ответ

1 голос
/ 21 июля 2011

Заменить строку

rs.Update

с

rs.UpdateBatch
...