2009-11-02 8 views
5

使用するCrystal Reportsすべてのラベルがあるヘッダーにデータベースフィールドの合計を表示しようとしています。Crystal Reports:グローバル変数の合計がヘッダーに表示されない

私は、次のと式のフィールドに現在の合計(RTversion)を配置することによって、これを実行しようとしました:

Shared stringvar CurrentVers; 
CurrentVers := {#CurrentVers}; 

し、ページのヘッダーセクションに、私は次のようにあります

Shared stringvar CurrentVers; 
EvaluateAFter({#currentVers}); 
CurrentVers; 

{#CurrentVers}が1番目に大きな番号を実行しています。

これは間違っていますか?

更新:目標は、ラベルの近くのヘッダーに最新のバージョンを表示して、現在のverseionが比較対象であることを示すことです。

+2

私はあなたが値が設定される前に表示しようとしていると思います。 –

+0

EvaluateAfter()関数は、実行中の合計#CurrentVersが終了するまで待つように指示していませんか? – phill

+0

+1良い質問。私はこれがよくある質問だと知っていますが、私はここでそれを見つけることができませんでしたので、これは人々にとって良い参考資料として役立ちます。 – Dusty

答えて

4

実行中の合計フィールドは、私の経験上、フッターセクションでのみ動作します。

手動の合計を作成する必要があります。

「詳細」セクションに式フィールドを追加して、キャプチャしようとしているものでグローバル変数を設定します。次のようなものがあります。

//use WhileReadingRecords if the values can be gathered as the report pulls in values from the database. Otherwise, use WhilePrintingRecords. 
WhileReadingRecords; 
Global Stringvar CurrentVers; 
//logic here to capture what you want 
CurrentVers:=... 

ヘッダーセクションに別の式フィールドを追加します。それにこれらの2行を追加します。

WhilePrintingRecords; 
Global Stringvar CurrentVers; 
+0

+1これがうまくいくと思います。 – Dusty

+0

currentversionの最大値を調べるために手動で実行する合計をどのようにしますか?詳細セクションでMaximum()関数を使用していますか?私はそれほど試してみましたが、WhileReadingRecords()で評価できないというエラーが表示されました。 – phill

+0

WhileReadingRecordsを取り出し、currentvers:= ...を設定し、ヘッダーにEvaluateAfter()関数を使用しました。 – phill

0

{#CurrentVers}が通常の合計フィールドである場合、追加の式に頼るのではなく、ページヘッダーに直接配置することができます。 {#CurrentVers}の構成に珍しい何かがあり、「最大数」の累計が普通のものを必要としない限り、式フィールドの必要性はここでは分かりません。

+0

多分私はこれに間違っていますが、レポートの上から下への読み方のために、ヘッダーに実行中の合計を配置するだけではうまくいかないと思います。これは私の頭の上から外れるので、私は間違っている可能性があります。 – Dusty

+0

これらは表示されますが、明らかにそのポイントまで処理されたレコードのみを反映します。しかし、元の質問は、彼らが達成しようとしていることからははっきりしていません。 – MartW

1

が、私はそれを考え出した。..

私がメインレポートにサブレポートを追加する必要がありました。メインレポートをコピーし、サブレポートとして名前を変更しました。サブレポートでは、共有変数を追加し、それをメインレポートに渡しました。このトリックは、サブレポートを同じグループヘッダーに配置することですが、セクションの上には表示しないようにする必要があります。 ; - ; オリジナルセクション(同じグループ 新規セクション(抑制していない私はここに共有変数の値を置き、同じグループ)

新しいセクション(抑制されません同じグループ-私はここにサブレポートを配置):私は実際には次のセクションを追加しましたそれは私が実行中の合計に基づいて抑制必要ヘッダ)

4

この

formula = Count ({Field to count},{GroupFieldName}) 

ような式を作成し、グループヘッダセクションに配置を有します。すべてのレコードがデータベースから読み取らされるまで評価されないように式を

WhilePrintingRecords; 
// Enter logic here e.g. 
// maximum({mytable.myfield}); 

WhilePrintingRecords;を強制し、したがって、式フィールドには、正しい結果が表示されます。

0

あなたはただ1つの式のフィールドでこれを解決することができますヘッダーに配置しても

0

私が見つけた鍵は、渡されている数式フィールドをサブレポートに配置する必要があることです。私はフッタに私のものを置き、それを抑えた。

関連する問題