diff --git a/packages/fcl-db/src/base/fields.inc b/packages/fcl-db/src/base/fields.inc index 6aea141531..175bd12676 100644 --- a/packages/fcl-db/src/base/fields.inc +++ b/packages/fcl-db/src/base/fields.inc @@ -820,7 +820,15 @@ procedure TField.SetData(Buffer: Pointer; NativeFormat : Boolean); begin If Not Assigned(FDataset) then DatabaseErrorFmt(SNoDataset,[FieldName]); + if (FieldNo>0) and not (FDataSet.State in [dsSetKey, dsFilter]) then + begin + if ReadOnly then + DatabaseErrorFmt(SReadOnlyField, [DisplayName], Self); + Validate(Buffer); + end; FDataSet.SetFieldData(Self,Buffer, NativeFormat); + if not (FDataSet.State in [dsCalcFields, dsFilter, dsNewValue]) then + DataChanged; end; Procedure TField.SetDataset (AValue : TDataset);