2009-12-04 44 views
0

我編寫了一個應用程序,它允許用戶定義一個查詢,使用TADOQuery組件運行它,並將報告另存爲一個XML文檔(SaveAsFile作爲Format參數傳入pfXML )離線查看。這工作正常。Delphi使用ClientDataSet的ADOQuery結果串聯

我現在需要做的是連接結果。我的意思是,我需要至少獲得兩份報告(使用相同查詢時使用相同的字段),並將它們連接在一起製作一份報告。例如: 假設我有一個查詢檢索用戶列表。我在「系統A」和「系統B」上運行這個查詢,系統A和系統B是兩個獨立的系統。在兩個系統上運行查詢後,我有兩個單獨的報告文件,我可以將其重新載入TADOQuery組件,然後在屏幕上查看。我需要做的是將報告一起加入,所以不必在兩個報告之間切換,我可以同時在屏幕上看到所有結果。

我被告知可以使用TClientDataSet來做到這一點,但是我對數據庫編程相對比較陌生,不知道從哪裏開始。我已經檢查了http://delphi.about.com/od/usedbvcl/a/tclientdataset.htm的文章,但我仍然處於黑暗中,因爲沒有什麼事情看起來像我需要做的事情。

因此,我有兩個問題: 1.是使用TClientDataSet獲取兩個單獨的結果集並連接它們的最佳方式?如果有更好的方法來做到這一點,它是什麼? 2.如果使用TClientDataSet是做到這一點的最佳方式,我該如何去做這件事?如何將數據從TADOQuery傳輸到TClientDataSet然後再回來?該處理的基本流程需要走這樣的事情:

報告1(LoadFromFile) - > TADOQuery \

        ClientDataSet -> TADOQuery -> SaveToFile 

報告2(LoadFromFile) - > TADOQuery/

所有的幫助將是對此表示讚賞。我真的不知道從哪裏開始!

回答

0

我剛剛完成了對此的研究。我的應用程序允許用戶通過查詢他們的數據庫來生成報告。我可以讓這個工作起作用,對於小的結果集非常有效 - 但是,由於這是一個報告應用程序,並且完全有可能返回數十萬條記錄,所以使用ClientDataSet會帶來巨大的性能問題。一旦你獲得大約50,000條記錄(合理的,給定客戶羣),處理開始呈指數增長,所以現在基本沒有實際意義。