0

ユーザーがクエリを定義し、TADOQueryコンポーネントを使用して実行し、オフラインで表示するためにレポートをXMLドキュメント(PfXMLをFormatパラメーターとして渡すSaveAsFile)としてPCに保存できるアプリケーションを作成しました。これは正常に機能します。

私が今やらなければならないことは、結果を連結することです。これが意味するのは、少なくとも2つのレポート(同じクエリを使用しているのと同じフィールドを持つ)を取得し、それらを結合して1つのレポートを作成する必要があるということです。例:ユーザーのリストを取得するクエリがあるとします。このクエリは、「システムA」と「システムB」で実行します。ここで、システムAとシステムBは2つの別個のシステムです。両方のシステムでクエリを実行すると、2つの個別のレポートファイルが作成されます。これらのファイルをTADOQueryコンポーネントにロードして、画面に表示できます。ただし、レポートを結合する必要があるため、2つのレポートを切り替える代わりに、すべての結果を同時に画面に表示できます。

TClientDataSetを使用してこれを実行できると言われましたが、データベースプログラミングは比較的慣れていないため、どこから始めればよいかわかりません。http://delphi.about.com/od/usedbvcl/a/tclientdataset.htmで記事をチェックしましたが、必要なことを正確に実行できるものがないため、まだ暗闇の中にいます。

したがって、2つの質問があります。1。TClientDataSetを使用して、2つの別々の結果セットを取得し、それらを連結するための最良の方法ですか。これを行うためのより良い方法がある場合、それは何ですか?2. TClientDataSetを使用することがこれを行うための最良の方法である場合、これをどの程度正確に実行しますか?TADOQueryからTClientDataSetにデータを転送してから、再度データを転送するにはどうすればよいですか?処理の基本的なフローは、次のようになる必要があります。

レポート1(LoadFromFile)-> TADOQuery \

                                  ClientDataSet -> TADOQuery -> SaveToFile

レポート2(LoadFromFile)-> TADOQuery /

これについては、すべての助けをいただければ幸いです。どこから始めたらいいのかわからない!

4

1 に答える 1

0

私はこれを調べ終えたところです。私のアプリケーションでは、ユーザーはデータベースにクエリを実行してレポートを生成できます。これを機能させることができ、小さな結果セットには非常に効率的ですが、これはレポートアプリケーションであり、ClientDataSetを使用すると数十万のレコードが返される可能性があるため、パフォーマンスに大きな問題が発生します。約50,000レコードを超えると(顧客ベースを考えると合理的)、処理は指数関数的に増加し始めるため、これは基本的に意味がありません。

于 2009-12-07T17:15:44.263 に答える