Débogage des erreurs de moment d'évaluation. SAP 2013 Support Package 1
Vous trouverez ci-dessous de brèves informations pour Crystal Reports 2013 Support Package 1. Ce guide de l'utilisateur vous initie à l'utilisation de Crystal Reports pour créer des rapports professionnels, de la sélection des données au regroupement et à la mise en forme, en passant par la création de diagrammes et de cartes. Il aborde également l'optimisation des rapports pour le Web et l'utilisation du référentiel SAP BusinessObjects Enterprise.
Utilisation des formules
20.7.1 Débogage des erreurs de moment d'évaluation
Lorsque l'Atelier de formules s'affiche à la suite d'une erreur de moment d'évaluation, l'arborescence de l'atelier contient une pile des appels. La racine de l'arborescence fournit une description de l'erreur qui s'est produite. Les nœuds de l'arborescence indiquent les noms des fonctions personnalisées et/ou des formules qui étaient en cours d'évaluation lorsque l'erreur s'est produite. La fonction/formule personnalisée qui se trouve au sommet de la pile des appels est celle dans laquelle l'erreur a été détectée. La fonction/formule personnalisée suivante dans la pile a appelé la fonction/formule personnalisée située au-dessus d'elle dans la pile. Si vous sélectionnez un nœud de fonction/formule personnalisée dans l'arborescence, le texte de la formule/fonction personnalisée s'affichera dans la fenêtre de l'éditeur et le texte de l'expression en cours d'évaluation lorsque l'erreur s'est produite sera mise en surbrillance. Si vous développez un nœud de fonction/formule personnalisée dans l'arborescence, les variables utilisées dans la formule/fonction personnalisée seront affichées avec la valeur qu'elles avaient au moment où l'erreur s'est produite.
20.7.1.1 Exemple d'erreur de moment d'évaluation
A l'aide de l'exemple de rapport "Custom Functions.rpt", créez une nouvelle formule qui divise 1 par le résultat de la fonction @Jours de calendrier compris entre. Dans la syntaxe Basic, la fonction serait : formula = 1/{@Calendar Days Between}
Dans la syntaxe Crystal, elle serait :
1/{@Calendar Days Between}
Insérez cette formule dans la section Détails du rapport et affichez-en l'aperçu. Vous obtenez une erreur de division par zéro et l'Editeur de formule est appelé avec la pile des appels sur le côté gauche.
20.7.2 Tutoriel de débogage
Suivez l'exemple ci-dessous pour apprendre les étapes nécessaires au débogage d'une formule. Après avoir terminé cet exercice, utilisez le même principe pour déboguer vos formules.
20.7.2.1 A propos de ce tutoriel
466 2013-09-26
Utilisation des formules
• Ce tutoriel utilise l'exemple de base de données Xtreme.mdb.
• Ce tutoriel utilise la syntaxe Crystal.
• La formule suivante est la formule que vous testerez pour trouver d'éventuelles erreurs :
If ({customer.CUSTOMER NAME} [1 to 2 = "Bi" and
ToText({customer,CUSTOMER ID}) [1] = "6") Or
({customer.CUSTOMER NAME} [1] = 'Ro" and
ToText({customer.CUSTOMER ID}) [1] = "5")
"PREFERRED CUSTOMER"
Else
"DOES NOT FIT CRITERIA"
Si elle est correcte, cette formule devrait sélectionner tous les clients dont le nom commence par "Bi" et dont l'ID client commence par "6" ainsi que les entreprises dont le nom commence par "Ro" et dont l'ID client commence par "5". Lors de l'impression du champ, les enregistrements sélectionnés seront estampillés "CLIENT PRIVILEGIE" alors que le reste sera estampillé "NE REPOND PAS AUX
CRITERES".
Examinez à présent chaque partie de la formule pour vérifier que chaque condition fonctionne individuellement.
20.7.2.2 Formule1
1.
Pour commencer, créez un rapport en utilisant la table Clients dans
Xtreme.mdb
et placez les champs suivants de gauche à droite dans la section Détails :
{customer.CUSTOMER ID}
{customer.CUSTOMER NAME}
Pour tester chaque portion de la formule, placez un nouveau champ de formule à côté de ces deux champs dans le rapport.
2.
Créez une nouvelle formule appelée Formule1.
3.
Tapez le texte suivant dans la zone
Texte de la formule
de l'Editeur de formule :
If {customer.CUSTOMER NAME} [1 to 2 = "Bi" Then
"TRUE"
Else
"FALSE"
4.
Cliquez sur
Vérifier
pour rechercher les erreurs éventuelles. Le message d'erreur suivant apparaît :
The ] is missing.
5.
Corrigez la formule en insérant le signe ] manquant après le 2.
6.
Cliquez de nouveau sur
Vérifier
. Le message suivant apparaîtra :
No errors found.
7.
Cliquez sur
Enregistrer et fermer
dans la barre d'outils de l'Atelier de formules.
467 2013-09-26
Utilisation des formules
468
8.
Insérez le champ de formule corrigé à droite des deux champs de données de la section Détails de votre rapport.
9.
Cliquez sur
Aperçu avant impression
dans la barre d'outils Standard pour vérifier les valeurs du rapport et comparer les champs afin de voir si les valeurs de champs renvoyées par @Formule1 sont correctes.
La valeur "TRUE" est affichée à côté des noms de client commençant par "Bi" et "FALSE" à côté des autres. Vérifiez maintenant les autres portions de la formule. Créez la Formula2, la Formula3 et la
Formula4 en suivant les étapes 1 à 9 à l'aide des formules spécifiées pour chacune d'elles.
Insérez chaque champ de formule sur la même ligne que la section Détails pour effectuer une comparaison rapide. Vérifiez qu'ils ne contiennent pas d'erreurs, corrigez les erreurs si nécessaire et assurez-vous de la validité des valeurs renvoyées avant de passer à la Formule2.
20.7.2.3 Formule2
1.
Créez une nouvelle formule et donnez-lui le nom Formule2.
2.
Tapez le texte suivant dans la zone
Texte de la formule
de l'Editeur de formule :
If ToText({customer,CUSTOMER ID}) [1] = "6" Then
"TRUE"
Else
"FALSE"
3.
Cliquez sur
Vérifier
pour rechercher les erreurs éventuelles. Le message d'erreur suivant apparaît :
This field name is not known.
4.
Corrigez la formule en remplaçant la virgule (,) dans le nom du champ par un point (.).
5.
Cliquez de nouveau sur
Vérifier
. La formule ne devrait plus contenir d'erreurs.
6.
Placez la formule à droite du champ @Formule1.
7.
Cliquez sur
Aperçu avant impression
dans la barre d'outils Standard pour vérifier les valeurs du rapport et comparer les champs afin de voir si les valeurs renvoyées par @Formule2 sont correctes.
La valeur "TRUE" doit apparaître à côté de tous les numéros de client commençant par 6 et la valeur
"FALSE" à côté des autres numéros de client.
20.7.2.4 Formule3
1.
Créez une nouvelle formule et donnez-lui le nom Formule3.
2013-09-26
Utilisation des formules
2.
Tapez le texte suivant dans la zone
Texte de la formule
de l'Editeur de formule :
If {customer.CUSTOMER NAME} [1 to 2] = 'Ro" Then
"TRUE"
Else
"FALSE"
3.
Cliquez sur
Vérifier
pour rechercher les erreurs éventuelles. Le message d'erreur suivant apparaît :
The matching ' for this string is missing.
4.
Corrigez la formule en changeant le guillemet simple (') avant Ro en guillemet double (").
5.
Cliquez de nouveau sur
Vérifier
. La formule ne devrait plus contenir d'erreurs.
6.
Placez la formule à droite du champ @Formule2.
7.
Cliquez sur
Aperçu avant impression
dans la barre d'outils Standard pour vérifier les valeurs du rapport et comparer les champs afin de voir si les valeurs renvoyées par @Formule3 sont correctes.
La valeur "TRUE" devrait maintenant être affichée à côté des noms de clients commençant par "Ro" et "FALSE" à côté des autres noms de clients.
20.7.2.5 Formule4
1.
Créez une nouvelle formule et donnez-lui le nom Formule4.
2.
Tapez le texte suivant dans la zone
Texte de la formule
de l'Editeur de formule :
If ToText({customer.CUSTOMER ID}) [1] = "5"
"TRUE"
Else
"FALSE"
3.
Cliquez sur
Vérifier
pour rechercher les erreurs éventuelles. Le message d'erreur suivant apparaît :
The word 'then' is missing.
4.
Corrigez la formule en entrant le mot "Then" après "5" à la fin de la première ligne.
5.
Cliquez de nouveau sur
Vérifier
. La formule ne devrait plus contenir d'erreurs.
6.
Placez la formule à droite du champ @Formule3.
7.
Cliquez sur
Aperçu avant impression
dans la barre d'outils Standard pour vérifier les valeurs du rapport et comparer les champs afin de voir si les valeurs renvoyées par @Formule4 sont correctes.
La valeur "TRUE" devrait à présent apparaître à côté de tous les ID client commençant par 5 et la valeur
"FALSE" à côté des autres ID client.
469 2013-09-26
Utilisation des formules
Maintenant que les formules ne contiennent plus d'erreurs et que les valeurs de champs renvoyées sont correctes, créez une formule reliant les composants séparés. Commencez par relier les deux premières formules (@Formule1 et @Formule2) et ajoutez ensuite @Formule3 et @Formule4 pour créer la formule finale @FormuleFinale.
20.7.2.6 Formule1+2
1.
Créez une nouvelle formule et donnez-lui le nom Formule1+2.
2.
Tapez le texte suivant dans la zone
Texte de la formule
de l'Editeur de formule :
If {customer.CUSTOMER NAME} [1 to 2] = "Bi" and
ToText({customer.CUSTOMER ID}) [1] = "6" Then
"TRUE"
Else
"FALSE"
3.
Placez la formule à droite du champ @Formule4.
L'indication "TRUE" (vrai) devrait apparaître à côté de chaque client dont le nom commence par Bi et dont l'ID commence par 6, et l'indication "FALSE" (faux) devrait apparaître à côté de tous les ID client qui ne répondent pas à ce critère.
Si cette formule fonctionne correctement, vous pouvez créer une dernière formule en ajoutant le code de @Formule3 et @Formule4.
20.7.2.7 FormuleFinale
1.
Créez une nouvelle formule et donnez-lui le nom FormuleFinale.
2.
Tapez le texte suivant dans la zone
Texte de la formule
de l'Editeur de formule :
If ({customer.CUSTOMER NAME} [1 to 2] = "Bi" and
ToText({customer.CUSTOMER ID}) [1] = "6") or
({customer.CUSTOMER NAME} [1 to 2] = "Ro" and
ToText({customer.CUSTOMER ID}) [1] = "5") Then
"PREFERRED CUSTOMER"
Else
"DOESN'T FIT CRITERIA";
3.
Placez la formule à l'endroit où vous voulez qu'elle apparaisse dans la section Détails du rapport.
Vous pouvez maintenant supprimer tous les autres champs de formule du rapport. Voir
Vous pouvez utiliser la même procédure de test condition après condition pour toutes les formules, comme moyen de vérification systématique.
470 2013-09-26

Lien public mis à jour
Le lien public vers votre chat a été mis à jour.
Caractéristiques clés
- Sélection et tri des données.
- Regroupement de données.
- Calcul des résumés.
- Création de graphiques.
- Création de cartes.
- Sections de rapport.