2012-03-29 6 views
3

Wie in Crystal das Ergebnis mit Formelfeld erhalten für die Anzahl der Datensätze zu zählen, wo Feldname = xxxConditional Count() in Crystal Report

wie: select count (*) als cnt von Tabl wobei f1 = xxx

und erklären Sie mehr mit Beispielen für Crystal Report count() -Funktion.

Projekt: VB.Net grüße, Sensa.

Antwort

6

Sie im Grunde ein Formelfeld wie erstellen:

if {mytable.field} = 'xxx' then 
{mytable.field}; 

dann count({formula});

oder Verwendung Summen mit einer Auswertungs Formel ausgeführt wird: {mytable.field} = 'xxx'

+0

Hallo Lee Tickett, danke für deine Antwort, aber es ist nicht die direkte Antwort. Ich verwende gerne Crystal Report count() -Funktion mit Bedingung. – Sensa

+1

Ich habe es optimiert, stattdessen count() zu verwenden. Aber die vorherige Antwort war wahrscheinlich besser. Ich bin ziemlich sicher, dass es keine "Countif" -Funktion in Kristall gibt. –

0

Es gibt mehrere Alternativen mit jeweils bestimmten Nachteilen auf.

1) Verwenden Sie den Auswahlexperten, um die Datensätze im Bericht bedingt einzuschränken. Der Hauptnachteil in diesem Fall ist natürlich der Verlust von Daten wahrscheinlich relevant für andere Teile des Berichts

2) Lösung 1) mit einem Unterbericht in den Hauptbericht integriert. Das Problem in diesem Fall ist Formatierungsbeschränkungen

3) Gruppierung verwenden. I.E. group by mytable.field verwendet eine laufende Summe für die Datensätze mit der Gruppe und fügt sie in den Gruppenkopf ein. Verstecken Sie die Gruppe selektiv durch den Sektionsexperten. Hier tritt wieder das Problem zusätzlicher Formatierungsbeschränkungen auf.

4) Schließlich, wenn Sie Zugriff auf die eigentliche Datenbank haben. Erstellen Sie eine Ansicht, dies ist die beste Lösung in Bezug auf Leistung und Probleme mit der Formatierung in Crystal Reports. Wenn Sie jedoch jedes Mal, wenn diese Art von Problem auftritt, eine Ansicht erstellen, kann dies dazu führen, dass Ihre Datenbank mit Ansichten belastet wird, die nur selten verwendet werden.

0

Sie können dies versuchen:

FormulaField1:

if {anytable.yourfield} = 'xxx' then 1 Else 0; 

Und dann:

FormulaField2:

sum({formula1}); 

Für integer:

FormulaField2:

CSTR (sum({formula1}),0);