2010-10-13 6 views
1

Je souhaite créer un rapport devant appeler plusieurs champs provenant de tables différentes. D'après ce que j'ai lu en ligne jusqu'à maintenant, la seule façon de le faire est d'avoir des sous-rapports.Utilisation de plusieurs tables dans iReport

Est-ce vrai ou existe-t-il un moyen d'exécuter plusieurs requêtes sur des tables différentes pour récupérer des données?

+0

pourriez-vous nous donner des échantillons ou être plus expansif sur ces 3 techniques? À votre santé! –

Répondre

3

Lorsque vous devez exécuter plusieurs requêtes que vous avez les options suivantes:

  • Utilisez subreports. C'est la méthode la plus ancienne (prise en charge depuis JasperReports 1.x) et la plus puissante car elle vous permet de faire à peu près n'importe quoi avec les résultats de votre seconde requête. Cependant, il est également laborieux et lorsque vous avez plus d'un ou deux sous-rapports, il devient rapidement ingérable.

  • Utilisez des jeux de données. Ceux-ci vous permettent d'exécuter une requête séparée, le jeu de résultats peut être utilisé dans un ensemble limité de composants (graphiques que je connais)

  • Utiliser des tables. Ceux-ci sont assez nouveaux (introduits dans JasperReports 3.7) et vous permettent d'exécuter une requête distincte pour remplir une table particulière.

Mon expérience est que dans la plupart des cas, vous ne pas besoin de plusieurs requêtes. La plupart des cas peuvent être traités par une seule requête SQL bien définie. Si vous avez besoin de données provenant de plusieurs tables, vous pouvez vous en sortir en les joignant soigneusement dans une seule requête.