--- bufdataset.pas.ori	Sun Feb 20 14:31:16 2011
+++ bufdataset.pas	Wed Apr 13 09:07:18 2011
@@ -1830,14 +1830,10 @@ var CurrBuff : pointer;
     NullMask : pbyte;
 
 begin
-  if not (state in [dsEdit, dsInsert, dsFilter, dsCalcFields]) then
-    begin
-    DatabaseErrorFmt(SNotEditing,[Name],self);
-    exit;
-    end;
   CurrBuff := GetCurrentBuffer;
-  If Field.Fieldno > 0 then // If = 0, then calculated field or something
+  If Field.FieldNo > 0 then // If = 0, then calculated field or something
     begin
+    Field.Validate(Buffer);
     NullMask := CurrBuff;
 
     inc(CurrBuff,FFieldBufPositions[Field.FieldNo-1]);
