在这个问题中,我询问了将数据集分解为子集的问题,并得到了很好的回应。现在我有相反的问题。我有两个不同的数据集,代表一个共同祖先的两个不同子类的对象,我需要使用相同的 TDBLookupComboBox 同时搜索它们,使用两个属性,ID # 和 Name,存在于父级中班级。
查找字段允许您从多个源字段中查找内容,但只能在同一数据集中,而不是两个不同的数据集中。查找控件只允许您指定一个查找字段进行搜索。有谁知道我如何从两个数据集中获取数据以一起出现在组合框中?
创建您自己的采用多个数据源的 TDBLookupComboBox。. . . 我之前创建了数据库感知控件(特别是下拉组合框)。它们很容易做到,并为您提供所需的所有控制。
您可以将两个数据集中的记录克隆到一个包含两者并集的新数据集中。
答案在您链接到的原始问题中。你说两个数据集的成员有一个共同的祖先。因此,将所有这些对象记录放入单个 TClientDataset 中,然后对于您的两个后代数据集,只需让它们使用来自该基本数据集的克隆游标。因此,您可以将它们访问为不同的集合,或者作为它们的一个组合集合。
当然,问题在于添加到未共享基类的后代类中的任何数据,假设您有任何数据。. .
创建实际上是其他 TDataSet 的联合的 TDataSource 或 TDataSet 后代。然后在插入时,您要么总是插入到一个特定的 TDataSet 中,要么有基于某个字段的值的规则来确定要插入哪个 TDataSet。. . .