2009-05-27 5 views
1

Ich habe einen Bericht, der derzeit in zwei Berichte unterteilt ist, und ich möchte sie zusammenführen.Wie kann ich Elemente in Crystal Reports konditionieren?

Im Grunde läuft es auf diese nach unten:

ich den Benutzer fragen, ob sie einen Seitenumbruch für jede Eigenschaft haben wollen, wenn sie ja beantworten, ich Art/Gruppe von Eigentum und dann ich sortieren nach X
Wenn der Benutzer Nein antwortet, möchte ich nur sortieren/gruppieren nach X

Ich habe versucht, die erste Gruppierung zu unterdrücken, wenn der Benutzer Nein antwortet, aber es sortiert immer noch entsprechend (nicht wie ich es will).

Wie kann ich dies tun, ohne es in zwei Berichten zu halten?

Antwort

3

Anstatt das Gruppierungsfeld zu unterdrücken, versuchen Sie, es auf eine leere Zeichenfolge zu setzen "". Ich habe gerade letzte Woche an einem Bericht gearbeitet, der sehr ähnlich war. Auch wenn "keine Gruppierung" ausgewählt wurde, wurde der Bericht immer noch nach einem unbekannten Standard gruppiert. Im Feld für die Gruppierung von Formeln habe ich festgestellt, dass, wenn 'keine Gruppierung' ausgewählt wurde, das Feld überhaupt nicht gesetzt wurde. Sobald ich es geändert habe, um das Feld auf eine leere Zeichenfolge festzulegen, wird der Bericht wie erwartet generiert.

+0

, die nicht funktioniert weil die Untergruppierung dann versucht, mit der Eigenschaft von "" – Malfist

+0

übereinzustimmen. Es funktionierte für mich gut. Wie sieht Ihre Bedingung im Feld für die Gruppierungsformel aus? –

+0

if {? DoPageBreak} dann {tblProperty.PropertyName} else "" – Malfist

2

Gruppieren oder sortieren Sie? Wenn Sie die Gruppenkopf-/Fußzeile nicht verwenden, ist dies im Grunde genommen dasselbe wie das Sortieren und Sie sollten einfach die Datensatzsortierung verwenden.

Um Felder in Gruppen zu gruppieren, würden Sie im Allgemeinen Formeln verwenden. Dazu die Felder in Frage arbeiten müssen als die gleiche Art zurückgegeben werden: Zahl, ein String, Datum usw. In Ihrem Fall ist es wie die erste Gruppierung Formel wie folgt ...

//{?break_by_property} would be the parameter value to control the page break 

if {?break_by_property) then 
{the_property_field} 
else 
"" //any static value of the same type as {the_property_field} 

wäre jetzt klingt gehen die „neue Seite vor“ Formel für den Gruppenkopf und geben Sie diese boolean Formel (Group ist ein spezielles Schlüsselwort) ...

{?break_by_property} and groupnumber > 1 

dann einen Datensatz sortieren hinzufügen für X.

+0

Ich verstehe Sie nicht ganz. Wenn der Benutzer Seitenumbrüche möchte, dann sortiere ich nach Y und sortiere nach X (weil sie auf einer FK verbunden sind). Wenn der Benutzer keine Seitenumbrüche wünscht, möchte ich nur nach X sortieren. Wenn ich die Initiale ersetze Gruppe mit "", die mit keinem FK auf der X-Tabelle verbunden ist, daher wird kein X angezeigt. :( – Malfist

+0

mit einem statischen Wert entfernt im Wesentlichen diese erste Gruppe, da alle Daten in dieser Gruppe sein werden. Willst du nicht entweder Seite brechen (dh gruppieren und neue Seite im Gruppenkopf hinzufügen) mit Y und nur nach X sortieren Sortierung nach x? Das wird das. Ich verstehe Ihre Bedenken bezüglich der FK-Verbindung nicht. Die Formel hat nichts mit der Tabellenverknüpfung zu tun. – dotjoe

+0

Wenn ich "" zurücksende, gibt es keine Xs, die mit "" verbunden sind sind nur mit {the_property_field} verbunden.Wenn ich es zu dem ändere, was Sie vorschlagen, erhalte ich einen leeren Bericht. – Malfist