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 полей, это правильно.
Вопросы:
Определено ли поле поиска во время разработки в
FieldDefs
?
(если это не считается, так ПОЧЕМУ?)Зачем
memSource.FieldDefs.Count
отличается отmemSource.Fields.Count
? (то есть у меня есть больше полей в memtable, чем в его определении)
Я делаю что-то неправильно в приведенном выше коде? Какие?
Заранее спасибо!!