Perhaps, as Çetin explained, you turn on buffering too late. You should do it in Form.Load(), at the latest (the other option, I think, is some method in the Form's DE - but I never used that). Form.Init() is not appropriate.
Or perhaps you are still turning buffering off again?
When saving records, don't forget to check for the return value of TableUpdate(). Here is some sample code:
Form.OnSave()
if TableUpdate()
return .T.
else
local laError(1)
aerror(laError)
MessageBox("Error saving record, message #" + trans(laError(1) + "-" + laError(2))
return .F.
endif
This is just the skeleton; the actual method would probably have some additional details.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)