Question : Les valeurs de Sumarize TopN des cumuls dans le titre de bas de page de groupe du cristal rapporte 2008

Monsieur/Madame, le

I veulent récapituler les trois valeurs principales trouvées dans l'objet de cumul que j'ai dans le titre de bas de page de groupe de mon rapport en cristal et placent ce total général dans le titre de bas de page de rapport.  Je peux avoir vingt groupes, mais je veux seulement ajouter les 3 valeurs principales trouvées dans le cumul que j'ai créé dans le titre de bas de page de rapport.  Je sais que c'est issue à multipassage \ évaluation - mais sûrement ceci peut être done.
class= de

Réponse : Les valeurs de Sumarize TopN des cumuls dans le titre de bas de page de groupe du cristal rapporte 2008

Je pense toujours que mon idée devrait avoir fonctionné, mais tant que vous avez trouvé une solution.

 > Je dis maladroit, parce que chaque fois que je veux changer
 > valeur de TopN que je dois devenir occupé changeant beaucoup de formule :

 Le « changement est-il la valeur de TopN » se rapportant auxquelles des valeurs supérieures vous voulez s'ajouter ensemble, ou peut-être juste combien de groupes sont dans le rapport ?  L'une ou l'autre manière, ce ne doit pas être un problème (jusqu'à un point).

 Votre première formule emploie Redim pour placer la taille de la rangée à 4, et cela n'est jamais changé dans les formules que vous avez signalées.  Si votre rapport a plus de 4 groupes, vous obtiendrez une erreur souscrite.  Peut-être vous faites quelque chose qui n'aura jamais plus de 4 groupes sur un rapport, comme les 4 quarts en année.  Autrement, vous devriez tenir compte de plus de groupes.

 L'one-way à manipuler qui serait d'augmenter simplement le nombre dans le Redim au nombre maximum des groupes que vous vous pensez aura jamais sur un rapport.  Une option plus dynamique est d'augmenter la taille de la rangée selon les besoins.  Pour faire cela, changer juste votre deuxième formule comme suit :

//array évaluent dans le titre de bas de page de groupe
WhilePrintingRecords ;
rangée numberVar droite ;
si GroupNumber > comptent (droite) alors
  Conserve droite [GroupNumber] de Redim ;
Droite [GroupNumber] : = tonumber ({#period brut}) ;


 Cela emploie juste la conserve de Redim pour augmenter la droite si nécessaire.  L'option de conserve garde le contenu courant (toutes les valeurs stockées jusqu'à ce point).

 Si le nombre de groupes sur le rapport était un souci, ceci devrait prendre soin de lui, jusqu'à un point.  La limitation ici est qu'une rangée peut seulement avoir 1000 éléments, ainsi si vous avez jamais un rapport avec plus de 1000 groupes, qui seront un problème.  Mais puisque la limite using vos formules courantes est 4, je devine qu'une limite de 1000 ne sera pas probablement un problème.  : -)


 Si vous êtes préoccupé par changer les formules pour ajouter ensemble quelque chose autre que les 3 valeurs principales, c'est quelque chose que vous devriez traiter, mais vous pouvez la simplifier.  Pendant qu'elle est maintenant, la formule de finale assortit les valeurs dans la rangée de le plus bas à le plus haut et ajoute ensemble les 3 valeurs finales, et cela fonctionne seulement s'il y a exactement 4 groupes sur le rapport (qui nous amène de nouveau à cette question plus tôt, fait votre _always_ de rapport ont 4 groupes là-dessus ?).  Vous pouvez simplifier qu'un peu en assortissant les valeurs de le plus haut à le plus bas et en ajoutant ensemble les 3 premières valeurs.  De cette façon il n'importe pas combien d'éléments sont dans la rangée (IE. combien de groupes sont sur le rapport).  Ajouter juste ensemble les premiers éléments de N pour obtenir votre total.  C'est discutablement peu un plus simple qu'ajoutant ensemble le dernier N.

 Pour assortir la rangée de le plus haut à plus bas, changer juste cette ligne dans la formule finale

si droite [counter2] > droite [counter2 + 1] puis

   à ceci

si droite [counter2] < RT="">
 IOW, changent > en <>
 Changer alors la dernière ligne en :

ajouter : = DROITE [1] +RT [2] +RT [3]


 FWIW, c'est une chose très mineure, mais la variable d'ajouter dans des services de cette formule aucun objectif réel.  Vous pourriez juste oublier que lui et la ligne finale pourraient être :

Droite [2] +RT [3] +RT [4] // votre formule originale

Droite [1] +RT [2] +RT [3] // ma version


 Également, quand vous vous êtes référé à « changer beaucoup de formule », êtes-vous peut-être des formules de utilisation comme celles que vous avez signalé pour ajouter ensemble les valeurs de topN pour plus d'un champ, et parliez-vous changeant les formules pour tous champs si vous vouliez changer N ?

 Si oui, vous pourriez simplifier cela en mettant le N dans une formule et en employant cette formule dans les formules qui ajoutent ensemble les valeurs.  Par exemple, créer une formule appelée le topN qui indique juste

3

 Une autre option serait de mettre les 3 dans une variable dans la formule dans votre en-tête de rapport.  L'une ou l'autre manière, vous emploieriez alors ces formule/variable dans votre formule finale.  Comment vous employez elle dépendra de la façon dont votre rangée est assortie.  Si vous l'assortissez dans l'ordre décroissant, comme j'ai proposé, alors vous voulez ajouter ensemble les premières valeurs de N et vous pourriez juste remplacer la ligne finale de la formule finale par ceci :

si {@topN} < Array="">  conserve droite de Redim [{@topN}] ;
Somme (droite)

 Cela indique juste que si la rangée fait vouloir plus d'éléments que vous (par exemple elle fait vouloir 4 éléments et vous seulement le 3) principal, alors emploie la conserve de Redim pour rendre la rangée plus petite, jetant les valeurs non désirées.  Si la rangée fait réellement vouloir moins d'éléments que vous (par exemple elle a 3 éléments et vous vouloir le 4) principal, il ne tracasse pas avec le Redim.  Aucun point en ajoutant plus d'éléments qui seront juste 0.
 Alors il emploie juste la somme pour s'ajouter ensemble ce qui est laissé dans la rangée.

 En fait, même si vous n'employez pas la formule de topN/idée variable, ceci pourrait être une bonne manière de manipuler changer le nombre de valeurs pour s'ajouter.  Les dernières lignes ont pu être :

si conserve < Array="">  droite [3] de 3 Redim ;
Somme (droite)


 Si vous voulez changer combien de valeurs sont ajoutées, changer juste ces deux 3 en nouvelle valeur.


 OK, je devine qui devrait vous donner assez pour mâcher dessus.  : -)

 James
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us