TFDMemtable FieldDefs不考虑查找字段吗?

时间:2019-01-31 04:10:04

标签: delphi memory-table

使用Delphi 10.2.3,我以Firedac TFDMemTable组件的形式删除了该组件,我使用Field Editor定义了5个字段,其中一个字段是Lookup Field(FieldKind = fkLookup)。 / p>

我创建了一个代码来扫描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.CountmemSource.Fields.Count不同? (即,内存表中的字段多于其定义中的字段)

我在上面的代码中做错什么了吗?什么?

谢谢!

0 个答案:

没有答案