首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Delphi中向FDMemTable添加字段

在Delphi中向FDMemTable添加字段
EN

Stack Overflow用户
提问于 2016-01-14 12:32:33
回答 1查看 3.8K关注 0票数 3

我正在用DBGrid编码一些东西,没有足够的数据可以用FDQuery获得。我想要自定义数据除了"FDQuery“数据。我找到了能够这样做的组件,它被称为FDMemTable。我可以从FDQuery获得数据到FDMemTable,但是我不能添加一个新的字段来放置不同的数据。因此,我的问题是如何将数据与FDQuery连接起来,并在FDMemTable中添加额外的列。

代码语言:javascript
复制
procedure TWorkflowDM.Temp;
var
  Error: string;
  Temp: string;
begin
  try
    FDQuery1.Open;
    FDQuery1.FetchAll;
    FDMemTable1.Data:= FDQuery1.Data;
    FDMemTable1.FieldDefs.Add('Test', ftString, 20, False);        <-ERROR (Error 'FDMemTable1: Field ''Test'' not found')
    FDMemTable1.Open;
    FDMemTable1.First;
    while not FDMemTable1.Eof do
    begin
      Temp:= FDMemTable1.FieldByName('Test').AsString;
      FDMemTable1.Next;
    end;
  except
    on E: Exception do
      Error:= E.Message;
  end;
end;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-14 16:59:23

我们从源DataSet复制字段定义并追加附加字段。然后我们叫CreateDataset可选地将活动设置为true。这将创建所有必要的字段并打开FDMemTable。然后我们用CopyDataset方法填充它。此代码适用于:

代码语言:javascript
复制
procedure TWorkflowDM.Temp;
var
  Error: string;
  Temp: string;
begin
  try
    FDQuery1.Open;
    // FDQuery1.FetchAll;
    FDMemTable1.FieldDefs := FDQuery1.FieldDefs;
    FDMemTable1.FieldDefs.Add('Test', ftString, 20{, False}); // default parameter
    FDMemTable1.CreateDataSet;//or just Open that sets Active to true; 
    FDMemTable1.CopyDataSet(FDQuery1);
    FDMemTable1.First;
    while not FDMemTable1.Eof do
    begin
      Temp := FDMemTable1.FieldByName('Test').AsString;
      FDMemTable1.Next;
    end;
  except
    on E: Exception do
      Error := E.Message;
  end;
end;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34789723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档