Crystal Reports  

Empilage de la sélection d'enregistrements sur le serveur de base de données

Si vous voulez accélérer le traitement des états, vous devez en premier lieu limiter le nombre de données renvoyées par la base de données. La formule de sélection d'enregistrements constitue pour cela votre outil principal.

Les pilotes fournis avec Crystal Reports pour les sources de données SQL permettent "l'empilage" de la sélection d'enregistrements sur le serveur de base de données. Lorsque vous définissez une formule de sélection d'enregistrements dans un état basé sur une source de données SQL, Crystal Reports l'analyse, génère la requête SQL correspondante et transmet cette requête au serveur de la base de données. La sélection s'effectue ensuite en deux étapes :

Comme les serveurs de base de données sont généralement plus rapides que les postes de travail, nous vous recommandons de définir des formules de sélection dont la première étape du traitement peut s'effectuer sur le serveur. Vous limitez ainsi la sélection des enregistrements sur votre machine lors de la seconde étape. Vous pouvez empiler sur le serveur les types de sélection d'enregistrements suivants :

Exemple d'empilage de la sélection d'enregistrements

Cet exemple démontre les avantages qu'il y a à écrire des formules de sélection d'enregistrements qui peuvent être empilées sur le serveur de base de données.

La table Commandes de l'exemple de base de données Xtreme compte 2 192 enregistrements, parmi lesquels 181 ont une date de commande antérieure à 2001. Supposons que vous souhaitiez créer un état basé sur ces enregistrements uniquement. D'une part, vous pouvez utiliser cette formule de sélection d'enregistrements :

Year ({Commandes.Date de commande})  1997

La requête SQL créée transmet l'ensemble des 2 192 enregistrements à Crystal Reports, puis la formule de sélection d'enregistrements réduit ce total à 181. Pour obtenir ce résultat, cliquez sur Afficher la requête SQL dans le menu Base de données. Notez que la requête SQL ne contient pas de clause WHERE. Ceci est dû au fait que Crystal Reports ne peut pas empiler la fonction Year ( ) dans la clause WHERE.

Toutefois, cette formule de sélection d'enregistrements génère le même état :

{Commandes.Date de commande}  #Jan 1, 1997#

Cette deuxième formule peut être exécutée sur le serveur de base de données, donc empilée. La requête SQL générée n'enverra que 181 enregistrements à Crystal Reports. Ainsi, lorsque la formule de sélection d'enregistrements est évaluée par Crystal Reports, aucun enregistrement supplémentaire n'a besoin d'être éliminé. Cliquez sur Afficher la requête SQL dans le menu Base de données et notez que la requête SQL résultante comporte une clause WHERE.

Comme le montre cet exemple, la vitesse de traitement de votre état s'améliore lorsque vous affinez la formule de sélection d'enregistrements. Dans ce cas, les deux formules génèrent le même état, mais la deuxième profite de la puissance et des optimisations que le serveur de base de données peut utiliser lorsqu'il gère ses propres données.

Astuces de performances pour la sélection d'enregistrements

Pour améliorer les performances des demandes de sélection d'enregistrements, notez les points suivants :

Général

Bases de données SQL

Voir aussi

Sélection des enregistrements de base | Expressions SQL