我正在用 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;
最佳答案
我们从源数据集中复制字段定义并附加附加字段。然后我们调用 CreateDataset
或 optionally set Active to 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;
关于database - 在 Delphi 中将字段添加到 FDMemTable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34789723/