Database Field Types Don't Match - Help

I have a dBASE table with similar pairs of fields in it, one of each pair is a
dBASE Character field (3 wide) and the other is a dBASE Numeric field (5,2
wide). Each pair is for a year - MEMB1997 & PAY1997, MEMB1998 & PAY1998 etc. I
switch between these fields in the database by creating a TFloatField (for
PAY????) and a TStringField (for MEMB????). I then allocate the FieldName to
these TFields to switch between the appropriate year fields.

The float field works fine, but when I use the TStringField, it reports an
error "Field 'MEMB1998' is not of the expected type. The creation and
allocation code is as :-

  {make persistent field for this year's payments}
  MembListPay := TFloatField.Create(MembList);
  with MembListPay do begin
    FieldName := Format('PAY%4.4d', [ThisYearInt]); {ThisYearInt = 1998}
    DisplayFormat := '#0.00';
    DataSet := MembList;
  {make persistent field for this year's membership}
  MembListMemb := TStringField.Create(MembList);
  with MembListMemb do begin
    FieldName := Format('MEMB%4.4d', [ThisYearInt]);
    DataSet := MembList;
  {put menu items on View menu for each year in database}
  with Memblist do begin
    Open;  {<< error displayed here}
etc etc

The DataType of the created field is ftString. I have made a persistent field
for the MEMB1998 field in the Fields Editor and it works OK - its DataType is
ftString too.
I have specified the FieldName as a string literal - no difference. I've looked
through all the properties and there does not seem to be anything which might
affect this.

The MembList data table is specified as as ttDBASE, setting to ttDefault makes
no difference.

What is the type which Delphi 2 finds different from expected.

Any suggestions most welcome

Alan Lloyd