我正在用DBGrid编码一些东西,没有足够的数据可以用FDQuery获得。我想要自定义数据除了"FDQuery“数据。我找到了能够这样做的组件,它被称为FDMemTable。我可以从FDQuery获得数据到FDMemTable,但是我不能添加一个新的字段来放置不同的数据。因此,我的问题是如何将数据与FDQuery连接起来,并在FDMemTable中添加额外的列。
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;发布于 2016-01-14 16:59:23
我们从源DataSet复制字段定义并追加附加字段。然后我们叫CreateDataset或可选地将活动设置为true。这将创建所有必要的字段并打开FDMemTable。然后我们用CopyDataset方法填充它。此代码适用于:
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;https://stackoverflow.com/questions/34789723
复制相似问题