Crystal Report: Wie bewerten Sie mehrere IF-Anweisungen in einer einzigen Formel?

Hintergrund

  • Ich bin versucht zu tun, einige suchen nette Validierung auf die details Zeile meines Berichts.
  • Ich habe mehrere Formeln mit dem Namen als Assert-Anweisungen, dass gibt false zurück, wenn Sie einen test fehlschlagen, und true, wenn Sie passieren.

Ziel

  • Ich möchte ein array erstellen, speichert "Regelverstöße" und dann zeigt Sie in einem Feld am Ende der Zeile unter einer überschrift namens "Broken Rules"

, Was ich bisher getan habe

  • Erstellt ein Array und Initialisiert es als ein leeres string-array in den Berichtskopf
  • Erstellt eine Formel zur Auswertung der einzelnen Regeln, erhöhen Sie das array und fügen Sie die gebrochene Regel Nummer (dies wiederholt sich code für jede Regel, nichts ausgefallenes). Diesem Hinzugefügt wird, in einen Unterdrückten Detailbereich oben meine Daten anzuzeigen.
  • Erstellt eine Formel, die eine Verknüpfung der Elemente in die Regeln gebrochen-array. Dies ist eine Formel, die angezeigt wird, zusammen mit meinen detail-Felder.
  • Erstellt eine Formel, um die Regeln gebrochen array zu leeren. Dieser geht in einen Unterdrückten Detailbereich nach meinen details anzeigen.

Problem

  • Crystal scheint nicht zu erlauben, ein "end if" - Anweisung, die ich finden kann.
  • Als solche, es scheint, ich kann nur bewerten, Wenn-Anweisung und nicht gruppiert in einer einzigen Formel.
  • Dies bedeutet, ich kann nicht mehrere ifs, eine für jede Regel.

Beispielcode

Erstellung des Arrays (eine Formel genannt Init_StringVar_Array_RulesBroken):

//@Init
//This goes into the report header
WhilePrintingRecords;

//initializes the array of broken rules which we'll add to during details
StringVar Array RulesBroken;
"";

Beispiel der ersten drei Regel Bewertungen, die Inkrement-arrays und Werte hinzufügen (dies ist in einer Formel genannt Increment_StringVar_Array_RulesBroken):

//@Increment
//Goes before the details section is displayed

//accesses the shared variable
WhilePrintingRecords;
StringVar Array RulesBroken;

//separate if statement for each assert statement

//01
if not {@Assert_01_IfCrewIsConstructionCrew_CBFlagShouldBeYesOrDirect} then
Redim Preserve RulesBroken[UBound(RulesBroken) + 1]; //extends the array to be able to hold one more item than it does currently
RulesBroken[UBound(RulesBroken)] := "01"; //adds the new string into the array

//02
if not {@Assert_02_IfCrewIsConstructionCrew_AndCBFlagIsDirect_WONumberShouldStartWithC} then
Redim Preserve RulesBroken[UBound(RulesBroken) + 1]; //extends the array to be able to hold one more item than it does currently
RulesBroken[UBound(RulesBroken)] := "02"; //adds the new string into the array

//03
if not {@Assert_03_IfCrewIsDesign_AndCBFlagIsDirect_WONumberShouldStartWithD} then
Redim Preserve RulesBroken[UBound(RulesBroken) + 1]; //extends the array to be able to hold one more item than it does currently
RulesBroken[UBound(RulesBroken)] := "03"; //adds the new string into the array

Irgendwelche Ideen?

  • Ist es eine If /then /end if-Funktion in Crystal Reports?
  • Wenn nicht, ist es ein workaround für diese Art der Sache in Crystal Reports? muss ich, um mehrere Formeln für jeden einzelnen und sicherstellen, dass Sie nach dem anderen gesetzt oder sowas?

Vielen Dank im Voraus für jede Hilfe!!!

  • + 1 Für die ausführliche Frage
InformationsquelleAutor SeanKilleen | 2012-04-19
Schreibe einen Kommentar