2014-09-02 7 views
0

Espérons que le titre dit tout .. Mais juste au cas où. Je suis en train de retravailler un logiciel interne personnalisé, écrit sur vb.net, qui interroge la base de données, rassemble les données retournées et les traite dans vb.net, puis affiche les résultats dans Crystal Reports pour les afficher.Crystal Reports compte les enregistrements entre deux dates de paramètre

Nous avons trouvé que c'était une perte de ressources, et qu'elle était cruellement lente. Comme je l'ai mentionné auparavant, je suis en train de retravailler ce programme pour que le Crystal Report rassemble lui-même l'information et l'affiche. Ce matin, je suis en train de retravailler une partie apparemment simple, un rapport mensuel qui compte seulement le nombre total d'enregistrements, de totaux et d'autres petites tâches.

Donc ma question est, quelle est la syntaxe de cristal pour compter le nombre d'enregistrements est retourné, ce qui est entre deux dates. (Paramètres qui sont passés depuis le côté vb)

Je veux écrire Crystal Reports met alors tout en évidence à l'intérieur du compte et me dit qu'un champ est requis ici.

J'ai également essayé de créer un total cumulatif, mais il a seulement compté 1. Donc, si c'est le bon plan d'action, veuillez expliquer.

Merci!

+0

Le rapport comprendra-t-il uniquement des enregistrements qui tombent dans cette plage de dates? Ou ces paramètres ne sont-ils pas utilisés dans la formule de sélection d'enregistrements? – Ryan

Répondre

1

La syntaxe de formule de rapports Crystal ne permet pas un comptage conditionnel de cette manière. J'effectue habituellement ce genre de chose avec deux formules séparées: La première remplit 1 ou 0 pour le test logique, la deuxième somme le premier, par exemple.

{@InRange}:

if {Table.Column} in {?FromDate} to {?ToDate} then 1 else 0

{@sumInRange}:

sum({@InRange}

Je suis assez sûr que j'ai obtenu des résultats similaires en une seule formule, mais rend le code moins lisible et plus difficile à maintenir, nécessitant parfois des commandes While Printing qui rendent les résultats de la formule inaccessibles pour une utilisation dans d'autres zones du rapport. L'utilisation de deux formules permet également un filtrage facile sur ce premier.

+0

+1 Vous pouvez également ignorer la seconde formule, comme vous le dites, en faveur de l'insertion directe de l'objet récapitulatif dans le rapport. Le mot-clé 'WhilePrintingRecords' n'est pas nécessaire lors de l'utilisation de fonctions récapitulatives anciennes, telles que sum()' et 'count()'. – Ryan

+0

Je pense que cette réponse est brillante. Je ne l'ai pas encore marqué comme la réponse parce que je viens avec +10 par rapport à l'original. Je travaille ceci et retournerai mes résultats. – Cody

+0

Ha! Votre réponse a produit les résultats corrects. J'ai dû creuser un peu plus profond, mais j'ai découvert que le précédent code vb.net n'incluait pas la date actuelle dans les résultats finaux. Crystal Reports a toutefois été suffisamment intelligent pour ajouter 1 milliseconde à la partie datetime de la requête, de manière à inclure également la date actuelle. – Cody

Questions connexes