TFDMemtable FieldDefs не считает поля поиска?

Используя Delphi 10.2.3, я бросил в форму Firedac TFDMemTable Компонент, который я использовал Field Editor для определения 5 полей, одно из этих полей - поле Lookup (FieldKind = fkLookup)

Я создал код для сканирования всех полей MemSource MemTable, чтобы добавить эти поля в MemDestination Memtable.

У меня была проблема в сканировании MemSource.FieldDefs потому что его общее количество полей не учитывало Lookup один! Смотрите код:

    procedure TFormA.BTCopyFieldsClick(Sender: TObject);
    var
       i         : integer;
    begin

      for I := 0 to MemSource.FieldDefs.Count-1 do
      begin
            if (memSource.Fields.Fields[i].FieldKind = FkData) then
                memDestination.FieldDefs.Add (
                         memSource.FieldDefs.Items[i].DisplayName,
                         memSource.FieldDefs.Items[i].DataType,
                         memSource.FieldDefs.Items[i].Size,
                         memSource.FieldDefs.Items[i].Required
                         )
           Else

                ShowMessage( GetEnumName(TypeInfo(TFieldKind),
                             Integer(memSource.FieldDefs.Items[i].Datatype)
                           );

           memDestination.CreateDataSet;
           memDestination.CopyDataSet(memSource,[coRestart, coAppend]);
      end;
   end;

Я понял, что memSource.FieldDefs.Count было только 4 поля, оно пропустило 5-ое, которое было типом поиска.

тем не мение memSource.Fields.Count составляет 5 полей, это правильно.

Вопросы:

  1. Определено ли поле поиска во время разработки в FieldDefs?
    (если это не считается, так ПОЧЕМУ?)

  2. Зачем memSource.FieldDefs.Count отличается от memSource.Fields.Count? (то есть у меня есть больше полей в memtable, чем в его определении)

Я делаю что-то неправильно в приведенном выше коде? Какие?

Заранее спасибо!!

0 ответов

Другие вопросы по тегам