2

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

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

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

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

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

4

1 回答 1

3

数据集有一个过滤器属性,可以使用条件进行设置。您还必须将过滤标志设置为 true。通过他的数据控件,您可以选择哪些字段是可见的。

所以:

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;

应该做的伎俩。

于 2008-11-05T20:00:09.177 回答