Delphi:在数据感知控件中显示数据集的子集

时间:2008-11-05 19:54:09

标签: delphi dataset

我有一个包含多个字段的内存数据集,其中一个是另一个数据集引用为外键的主键。事实上,主数据集可以具有对细节数据集的多个引用。 (这是对包含其他对象的动态数组的对象进行建模。)

如果每个子对象只有一个,我可以与主数据集中引用字段的KeyFields和LookupKeyFields属性建立正确的关联,但这只是为了返回一个结果。我想加载 all 主键与正确ID键匹配的记录,并将它们显示在列表框中。

我认为TDBListBox可以帮助解决这个问题,但事实证明这不是他们所做的。那么我如何使用多重匹配检查的结果集填充列表框或类似控件以进行进一步编辑?我想要类似于SQL查询的结果:

select field1, field2, field3
from client_dataset
where client_dataset.primary_key = master_dataset.id

唯一的问题是,这完全由内存数据集完成。这里没有使用真正的数据库。有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:3)

数据集具有Filter属性,可以使用条件进行设置。您还必须将筛选标志设置为true。使用datacontrols,您可以选择哪些字段可见。

所以:

var
  c : TColumn;
begin
  clientdataset.Filter := Format('primary_key = %d', [master_dataset.id]);
  clientdataset.Filtered := True;

  c := DBGrid1.Columns.Add;
  c.FieldName := 'field1';
  c := DBGrid1.Columns.Add;
  c.FieldName := 'field2';
  c := DBGrid1.Columns.Add;
  c.FieldName := 'field3';
end;

应该做的伎俩。