TFDMemtable FieldDefs не считает поля поиска? - PullRequest
0 голосов
/ 31 января 2019

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

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

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

    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, чем в его определении)

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

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

...