是否可以将多个表中的多个查询的结果放入TClientDataset?

就像

SELECT * from t1;
SELECT * from t2;
SELECT * from t3;

我似乎无法找到一种让数据提供程序(SetProvider)一次从多个表中提取结果的方法。

有帮助吗?

解决方案

没有办法像你引用的那样在同一个TClientDataSet中拥有多个表数据。 TClientDataSet为单个数据集保存单个游标。

其他提示

ClientDatasets 可以包含本身是其他数据集的字段。因此,如果要在单个数据集中创建三个表,请创建三个 ClientDatasets ,保存所需的三个结果集,然后将它们放入单个 ClientDataSet 中。

这篇文章:

http://dn.codegear.com/article/29001

向您展示如何在运行时和设计时执行此操作。请特别注意标题为:

的部分

使用 TFields "

在运行时创建 ClientDataSet的结构

唯一的方法是加入表格。但是你必须通过加入的外键提供连接的标准。

select * from t1, t2, t3 where t1.key = t2.key and t2.key = t3.key;

现在假设您想出了一个允许这种连接的密钥(如LineNr)。然后,您可以使用完全外部联接来包括所有记录(如果不是所有表都具有相同的行数,则很重要)。但这会以某种方式成为黑客。请确保不要为键使用auto_number,因为它不会重复使用键,因此往往会在编号中留下空洞,导致许多行仅部分填充值。

如果要从具有相同字段集的多个表中填充clientdataset,可以使用UNION运算符执行此操作。这将只使用相同的列并将所有行组合成一个表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top