Mon rapport regroupe deux champs, le second étant un champ de date.
Si je vais dans "Expert de groupe", que je sélectionne le deuxième champ (celui de la date) et que je clique sur Options, j'obtiens la boîte de dialogue "Modifier les options de groupe". Il y a deux onglets (Commun et Options), sur l'onglet Commun nous voyons maintenant trois comboboxes.
Combobox1 : Le champ Date
Combobox2 : par ordre croissant.
La troisième boîte de dialogue, qui existe parce qu'il s'agit d'un champ de date, est surmontée de cette étiquette : "La section sera imprimée :"
Et sa valeur est :
Combobox3 : pour chaque jour.
OK. Dans mon éditeur de formule, j'ai besoin de faire la somme d'un champ (dans notre champ groupé), donc ma formule ressemble à ceci :
Sum({Table.Field}, {Table.OurDateFieldWeAreGroupingOn}, "daily")
Le mot "quotidien" est présent parce que l'expert du groupe est "pour chaque jour". Si je change ComboBox3 en "pour chaque mois", la chaîne de la fonction Sum devra être remplacée par "monthly". La fonction Sum est là pour que je dispose d'un total courant à chaque fois que Crystal établit des rapports sur les ruptures de mon regroupement.
Le problème que je rencontre est la condition de la chaîne de caractères. En effet, je souhaite pouvoir modifier le regroupement au moment de l'exécution.
Par exemple,
switch (grouping)
{
case Minute:
m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 9;
break;
case Hour:
m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 10;
break;
case Day:
m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 0;
break;
case Week:
m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 1;
break;
// etc, etc, etc
}
Ils me permettent donc de modifier le regroupement au moment de l'exécution, sans aucun problème. Au moment de la conception, j'avais "quotidien", mais je pouvais le rendre "mensuel" (par exemple). Par ailleurs, quelqu'un sait-il si je peux remplacer les 9, 10, 0, 1, etc. par des valeurs définies par Crystal Reports (quelque chose qui proviendrait d'une énumération ou autre) ? Je n'ai compris que "hebdomadaire était 1" (par exemple) que parce que c'était le deuxième élément de la "combobox3".
Etant donné que je peux changer cela au moment de l'exécution ? Comment diable puis-je modifier la condition de ma formule ?
Si je le change, au moment de l'exécution, en hebdomadaire, j'aurais besoin que mon Sum ressemble à ceci :
Sum({Table.Field}, {Table.OurDateFieldWeAreGroupingOn}, "weekly")
Le problème est que dans l'éditeur de champ, si j'utilise autre chose qu'une chaîne, j'obtiens cette erreur : "Une condition de groupe doit être une chaîne". J'ai essayé de passer cette chaîne comme valeur (par exemple) :
Sum({Table.Field}, {Table.OurDateFieldWeAreGroupingOn}, {@ValuePassedIn})
S'il est possible de modifier le regroupement au moment de l'exécution, je dois aussi pouvoir modifier les conditions des formules, n'est-ce pas ?