Wir verfügen über einen Crystal Report, mit dem der Benutzer auswählen kann, auf welche der verschiedenen Felder gefiltert werden soll. In der Datensatzauswahlformel haben wir Code wie folgt aus:Wie filtert man ein Zahlenfeld gegen einen mehrfachen String-Parameter oder String-Array?
if {?First Selection Type} = "CUSTOMER CODE" then {foo.CustCode} in {?First Selection Value}
else if {?First Selection Type} = "ORDER" then {bar.OrderNum} in {?First Selection Value}
...
Der {?First Selection Value}
Parameter als mehrere String-Parameter definiert ist, da einige der Möglichkeiten Strings verwenden müssen.
Leider ist das Feld bar.OrderNum
numerisch.
Wenn ich versuche, den Code wie oben einzugeben, gibt Crystal Reports den Fehler "Ein Nummernbereich ist hier erforderlich".
Wenn ich CStr({bar.OrderNum})
setze speichert es ohne Fehler, aber enthält diese Kriterien nicht beim Generieren der SQL-Anweisung, was zu schrecklichen Leistung führt, wie es jeden Auftrag aus der Datenbank abzieht und sucht sie Client-Seite.
Wenn ich ToNumber({?First Selection Value})
oder CDbl({?First Selection Value})
setzen, gibt es die Fehlermeldung "Dieses Array indexiert werden müssen. Zum Beispiel: Array [i]."
Ich brauche eine Möglichkeit, um dieses Kriterium an den Datenbankserver zu übergeben, ohne die Parameter für die Benutzer verwirrender zu machen.
Wenn es darauf ankommt, verwenden wir Crystal Reports 11.0.0.895 für eine Progress OpenEdge 10.1B03-Datenbank.