2008-09-21 73 views
1

是否可以將來自多個表的多個查詢的結果放入TClientDataset?TClientDataset中的多個表?

只是像

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

我似乎無法找出一種方式來獲得數據提供者(SetProvider)在同一時間從多個表的結果來拉。

回答

0

沒有辦法在您引用的同一個TClientDataSet中擁有多個表數據。 TClientDataSet爲單個數據集保存單個遊標。

4

唯一的方法是加入表格。但是,您必須通過連接的外鍵提供連接的條件。

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

現在假設你想出了一個可以允許這樣的連接的鍵(比如LineNr)。然後,您可以使用完整的外部聯接來包含所有記錄(如果不是所有表都具有相同的行數,則重要)。但這會以某種方式成爲黑客。一定不要使用key的auto_number,因爲它不重用鍵,因此往往會在編號中留下空洞,導致許多行中只有部分值被填充。

如果要從多個具有相同字段集的表中填充clientdataset,可以使用UNION運算符來完成此操作。這將只使用相同的列並將所有行組合到一個表中。

12

ClientDatasets可以包含本身是其他數據集的字段。因此,如果您想要在單個數據集中創建三個表格,請創建三個ClientDatasets,以保存您想要的三個結果集,然後將它們放入一個ClientDataSet

文章:

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

告訴您如何既在運行時和在設計時做到這一點。要特別注意標題爲:

+0

這另一篇文章「使用TFields在運行時創建ClientDataSet's結構」也應該被提及:http://edn.embarcadero.com/article/29825 – EMBarbosa 2014-01-10 19:18:40