Calculated field repeats records in query

Hi folks
I have a query which includes a memo and a calculated field of type
string 30. I want to use the Calculated field to show the first 30
characters of the memo in a DBGrid.
Within the OnCalcFields event of the TQuery I have:
  quCallHdrCHCalcField:= quCallHdrCHMemo
This does show the start of the memo, but unfortunately repeats the
records.
A showmessage in OnCalcFields confirmed that it was being called many
times.
I remember reading that the OnCalcFields shouldn't change anything as
that can cause this type of effect, but is my code changing anything
(other than the calc field)?
Is it possible to achieve what I want, and if so what should I change?  
Thanks :-)