レポートの背景: これは、当社のビジネスで働く従業員の生産性レポートです。クライアントとの訪問時間に基づいて、生産性を判断します。一部の従業員はグループセッションを提供しています。グループ内の各クライアントに料金を請求します。たとえば、1 時間のサービスしか提供していない場合でも、グループに 10 人がいる場合は 10 時間分の料金を請求できます。サービスコードによって、彼らがどのようなサービスを提供したかを判断します。
この数式には、サービス コード フィールドと期間フィールドの 2 つのフィールドがあります。
期間フィールドは、最初はデータベースの STRING フィールドですが、数値データしか提供しないため、numberVar に変更します。サービス コード フィールドも文字列フィールドであり、文字と数字が含まれることがあります。
Crystal Reports で実行する必要があるのは、期間の合計を取得することです。ただし、サービス コードがたとえば「1000」の場合、合計する前にまず期間を 3 で割る必要があります。これは私が巻き込まれるところです。
期間中の私のコードは次のとおりです。
local numbervar num1;
If GroupName ({billing_tx_charge_detail.v_SERVICE_CODE})="1530" then
num1 := ToNumber({billing_tx_charge_detail.v_duration})/3
else num1 := ToNumber({billing_tx_charge_detail.v_duration})
次に、sumDuration という名前の合計の別の式を実行します。
Sum(@duration)
このフィールドを集計できないというエラーが表示されます。Google で 2 日間検索した結果、Crystal では定数を含むフィールドや数式を集計できないことがわかりました。簡単に言うと:
local numbervar num1;
num1 := ToNumber({billing_tx_charge_detail.v_duration})
次に、@duration を要約できます。私は何が欠けていますか?それは単純なものでなければなりませんが、私はそれを見ていません。ここで取得しようとしていることを達成するためのカスタム関数を作成する方法はありますか? それともそれよりもさらに簡単ですか?
ある人は、データがレポートに届く前に計算を行うために SQL コマンドを作成することを提案しました。私はSQLの初心者なので、どこから始めればよいかわかりませんでした。