是否可以將來自多個表的多個查詢的結果放入TClientDataset?TClientDataset中的多個表?
只是像
SELECT * from t1;
SELECT * from t2;
SELECT * from t3;
我似乎無法找出一種方式來獲得數據提供者(SetProvider)在同一時間從多個表的結果來拉。
是否可以將來自多個表的多個查詢的結果放入TClientDataset?TClientDataset中的多個表?
只是像
SELECT * from t1;
SELECT * from t2;
SELECT * from t3;
我似乎無法找出一種方式來獲得數據提供者(SetProvider)在同一時間從多個表的結果來拉。
沒有辦法在您引用的同一個TClientDataSet中擁有多個表數據。 TClientDataSet爲單個數據集保存單個遊標。
唯一的方法是加入表格。但是,您必須通過連接的外鍵提供連接的條件。
select * from t1, t2, t3 where t1.key = t2.key and t2.key = t3.key;
現在假設你想出了一個可以允許這樣的連接的鍵(比如LineNr)。然後,您可以使用完整的外部聯接來包含所有記錄(如果不是所有表都具有相同的行數,則重要)。但這會以某種方式成爲黑客。一定不要使用key的auto_number,因爲它不重用鍵,因此往往會在編號中留下空洞,導致許多行中只有部分值被填充。
如果要從多個具有相同字段集的表中填充clientdataset,可以使用UNION運算符來完成此操作。這將只使用相同的列並將所有行組合到一個表中。
ClientDatasets
可以包含本身是其他數據集的字段。因此,如果您想要在單個數據集中創建三個表格,請創建三個ClientDatasets
,以保存您想要的三個結果集,然後將它們放入一個ClientDataSet
。
文章:
http://dn.codegear.com/article/29001
告訴您如何既在運行時和在設計時做到這一點。要特別注意標題爲:
這另一篇文章「使用
TFields
在運行時創建ClientDataSet's
結構」也應該被提及:http://edn.embarcadero.com/article/29825 – EMBarbosa 2014-01-10 19:18:40