Crystal Reportを使用して、複数のフィールドのどれをフィルタリングするかを選択できます。レコード選択式では、我々は次のようなコードを持っている:いくつかの選択肢が文字列を使用する必要があるため複数の文字列パラメータまたは文字列配列に対して数値フィールドをフィルタリングする方法は?
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}
...
{?First Selection Value}
パラメータは、複数の文字列パラメータとして定義されます。
残念ながら、bar.OrderNum
フィールドは数値です。
上記のコードを入力しようとすると、Crystal Reportsに「ここに番号範囲が必要です」というエラーが表示されます。
CStr({bar.OrderNum})
と入力すると、エラーなしで保存されますが、SQL文を生成するときにその条件が含まれないため、データベースからすべての注文を引き下げてクライアント側で検索するため、パフォーマンスが低下します。私はToNumber({?First Selection Value})
またはCDbl({?First Selection Value})
置く場合
は、それが「例えば、この配列は添字なければなりません:配列[i]とする。」というエラーを与えます
この基準をデータベースサーバーに送信するには、パラメータをユーザーにとってよりわかりやすくする必要があります。
重要な場合は、Progress OpenEdge 10.1B03データベースに対してCrystal Reports 11.0.0.895を使用しています。
CAST("bar1"."SOrderNum" AS VARCHAR(10))
、その後にレコード選択を変更します:少なくとも
if {?First Selection Type} = "CUSTOMER CODE" then {foo.CustCode} in {?First Selection Value}
else if {?First Selection Type} = "ORDER" then {%OrderNumStr} in {?First Selection Value}
...
この私はそれが動作するようです見つけ