Skip to main content

OldValue

property OldValue: Variant read;

Example

function OriginalStatus(const Data: TvxClientDataSet): Variant;
begin
Result := Data.FieldByName('Status').OldValue;
end;

Usage

OldValue reads the field through the dataset's original-value state, returning Unassigned during insert/set-key and depending on retained client change-log data.

  • Capture comparison values explicitly before Post when a flow depends on them.
  • Test Variant state before comparison and distinguish Unassigned from Null.
  • Use governed audit data, not this transient buffer, for historical or compliance questions.

Additional Technical Info

OldValue reads the field using dataset state dsOldValue. It is intended for update/change-log comparison, not as a historical database audit.

Source-backed behaviour

TField.GetOldValue returns Unassigned immediately while the dataset is in dsInsert or dsSetKey. Otherwise it delegates to GetStateFieldValue(dsOldValue, Self), which temporarily changes dataset state, reads AsVariant for stored field kinds and restores the previous state. Non-stored field kinds return Null.

The value exists only when the concrete dataset retains an old/original buffer. Velox normally opens TvxClientDataSet with LogChanges=False outside edit mode, and DataView code comments explicitly note cases where OldValue is no longer useful after posting. Therefore an apparently current/equal/unavailable result is not evidence that a business value never changed. No database query or audit lookup occurs.

Official RTL references

Created 2026-07-15