Question

J'ai écrit une application qui permet à un utilisateur de définir une requête, exécutez à l'aide d'un composant TADOQuery et enregistrer le rapport sur leur PC comme un document XML (SaveAsFile passant pfXML comme paramètre Format) pour une consultation hors ligne. Cela fonctionne très bien.

Ce que je dois maintenant faire est de concaténer les résultats. Ce que je veux dire par là que je dois obtenir au moins deux rapports (avec des champs identiques car ils utilisent la même requête) et les réunir pour faire un rapport. Par exemple: Dire que j'ai une requête qui extrait une liste d'utilisateurs. Je lance cette requête sur « Système A » et « Système B », où le système A et le système B sont deux systèmes distincts. Une fois que je l'ai exécuter la requête sur les deux systèmes, j'ai deux fichiers de rapports séparés, que je peux charger de nouveau dans un composant TADOQuery puis voir à l'écran. Ce que je dois faire si les rapports se joindre ensemble, donc au lieu d'avoir à basculer entre les deux rapports, je peux voir tous les résultats à l'écran en même temps.

On m'a dit que je peux le faire en utilisant un TClientDataSet mais je suis relativement nouveau à la programmation de base de données et ont aucune idée où commencer avec cela. J'ai vérifié les articles http://delphi.about.com/ od / usedbvcl / a / tclientdataset.htm mais je suis toujours dans l'obscurité que rien ne semble faire exactement ce que je besoin de le faire.

J'ai donc deux questions: 1. utilise un TClientDataSet la meilleure façon de prendre deux ensembles de résultats séparés et les concaténer? S'il y a une meilleure façon de ce faire, est-il? 2. Si vous utilisez un TClientDataSet est la meilleure façon de le faire, comment exactement Irais-je à faire cela? Comment peut-on transférer des données d'un TADOQuery dans un TClientDataSet, puis de nouveau? Le débit de base du traitement doit aller quelque chose comme ceci:

Rapport 1 (LoadFromFile) -> TADOQuery \

                                  ClientDataSet -> TADOQuery -> SaveToFile

Rapport 2 (LoadFromFile) -> TADOQuery /

Toute aide serait appréciée à ce sujet. Je ne sais vraiment pas par où commencer!

Était-ce utile?

La solution

Je suis à peu près fini de regarder dans ce. Mon application permet à l'utilisateur de générer des rapports en questionnant leurs bases de données. Je peux obtenir ce travail et il est très efficace pour petits jeux de résultats - cependant, car cela est une application de reporting, et il est tout à fait possible que des centaines de milliers d'enregistrements peuvent être renvoyés, en utilisant un ClientDataSet donne des problèmes de performances énormes. Une fois que vous obtenez au-dessus d'environ 50.000 dossiers (raisonnable, compte tenu de la base de clients), le traitement commence à augmenter de façon exponentielle, c'est donc maintenant essentiellement sans objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top