0

VS 2003 で Crystal Reports の Sum フィールドに問題があります。VS 2003 と Crystal Reports を使用して、SQL Server 2000 データベースから取得したデータを含むレポートを生成し、実行時に厳密に型指定されたデータセット内に保持しています。

データセットにはいくつかのテーブルが含まれており、そのうちの 1 つであるordersテーブルは、2 つの異なるテーブルのレコードを結合する SQL クエリの結果を受け取ります。実行時にordersテーブルの内容をチェックした後、データセットを Report オブジェクトに渡す直前に、問題の SQL クエリが正しく機能し、常にデータベースから期待されるデータを返すことを確認しました。

データセットは反復処理され、反復ごとに、異なる orderID に対して実行された SQL クエリの結果がデータセットにマージされます。また、SQL クエリは、各 orderID に関連する他のテーブルからレコードを取得し、それらをデータセット内の適切なテーブル ( orders以外) に配置します。

特定の列、 orders.order_amount列を Crystal Reportに合計しようとすると、問題が発生します。私が得る合計は間違っています。

たとえば、ordersテーブルには、レポートのデータソースとしてバインドされた時点で 3 つのレコードが含まれており、それぞれのorder_amount = $10.00 です。$30.00 を返す代わりに、sum フィールドの値は $50.00 のようになります。

これがどのように発生するのかわかりません。Crystal Reports のバグか、レポートに項目が欠落していることが原因だと思います。データセットは正しく入力されていますが、Crystal Reports は、 orderIDに基づいて取得された関連レコードを、ordersテーブルのレコードとして何らかの形で混同し、order_amountの合計に追加しているようです。

関連レコードを入力する SELECT ステートメントを無効にすると、order_amountの合計が正しく表示されます。

なぜこれが起こるのか誰にも分かりますか?前もって感謝します。

レイ

4

2 に答える 2

1

最良の推測は、無効にしている「関連レコード」が原因で、クエリとの親子関係の結果として order_amount が数回表示されることです。有効/無効にしている Select ステートメントによって、3 行ではなく 5 行が返される可能性はありますか? 3 行のうち 2 行に 2 つの関連レコードがある場合、Crystal はそれらを 5 行として読み取り、それに応じて合計します。

于 2009-11-12T20:43:10.797 に答える
0

お返事ありがとうございます。レポート レベルでいくつかの CR コードを追加して注文データをチェックし、いくつかの共有変数を注文金額の合計とレポートに関連するその他の合計で更新することで問題を解決しました。

CR が注文テーブルのレコードをデータセットの他のテーブルの関連レコードに追加する理由はまだわかりません。必要なのは注文テーブルのレコードだけであることを明確に指定します。CR は、 Sum(orders.order_amount)である Sum 操作によって論理的に暗示されることを実行しないようです。とにかく、問題は解決しました。ご助力いただきありがとうございます。レイ

于 2009-11-17T08:38:06.680 に答える