0

クリスタルレポート初心者です。データセットから Crystal レポートにデータをバインドするときに、2 回または 3 回表示されます。

SQL 2005 と VS 2008 を使用しています。

デバッグ時にSQLとデータセットもチェックインしましたが、データセットには5つのレコードしかありませんが、クリスタルには10個のレコードが表示されています。

以下は私のコードです:

ReportDocument doc = new ReportDocument();

sda = new SqlDataAdapter(" SELECT ac_mstr.AC_DESC, TRAN_HDR.DOC_DT, TRAN_DTLS.GL_CODE,    DBCR, AMT FROM dbo.TRAN_DTLS TRAN_DTLS INNER JOIN dbo.AC_MSTR ac_mstr ON (TRAN_DTLS.SUB_CODE=ac_mstr.SUB_CODE) AND (TRAN_DTLS.GL_CODE=ac_mstr.GL_CODE) INNER JOIN dbo.TRAN_HDR TRAN_HDR ON (TRAN_DTLS.TC=TRAN_HDR.TC) AND (TRAN_DTLS.DOC_NO=TRAN_HDR.DOC_NO) where tran_hdr.tc='CAS' and tran_hdr.doc_dt between '2012/01/01' and '2012/12/30'   ORDER BY TRAN_DTLS.GL_CODE", con);

        sda.Fill(ds);      
       doc.Load(Server.MapPath("~/Reports/Acc_sum.rpt"));

      doc.SetDataSource(ds.Tables[0]);
      CrystalReportViewer1.ReportSource = doc;

誰でも私を助けることができますか?

4

2 に答える 2

0

間違いはあなたのクエリから来ました:

    SELECT ac_mstr.AC_DESC, TRAN_HDR.DOC_DT, TRAN_DTLS.GL_CODE,    DBCR, AMT 
FROM dbo.TRAN_DTLS TRAN_DTLS INNER JOIN dbo.AC_MSTR ac_mstr
 ON (TRAN_DTLS.SUB_CODE=ac_mstr.SUB_CODE) AND (TRAN_DTLS.GL_CODE=ac_mstr.GL_CODE) 
INNER JOIN dbo.TRAN_HDR TRAN_HDR ON (TRAN_DTLS.TC=TRAN_HDR.TC) AND (TRAN_DTLS.DOC_NO=TRAN_HDR.DOC_NO) where tran_hdr.tc='CAS' and tran_hdr.doc_dt between '2012/01/01' and '2012/12/30'   ORDER BY TRAN_DTLS.GL_CODE

これにより、データが2回表示されるため、クエリを変更してください。

于 2012-09-29T07:35:55.017 に答える
0

Crystal Reports は、データに対して予想外のことを行うことができます。(Crystal レポートをエディターで開いてあちこちクリックする以外に) デバッグを開始するには、SQL Server プロファイラーを使用するのが最適です。詳細なチュートリアルは、http://www.databasejournal.com/features/mssql/article.php/3750161/Introduction-to-SQL-2005-Profiler-Part-1.htmにあります。

SQL Server 2005 Express は SQL Server Pro ファイラーで使用できますが、プログラムにはバンドルされていないことに注意してください。

便宜上、基本的な手順を添付しました。

-

  1. SQL Server プロファイラーを開きます。
    • スタート メニューから: \すべてのプログラム\Microsoft SQL Server 2005\Performance Tools\SQL Server Profiler。
    • SQL Server Management Studio から: Tools\SQL Server Profiler
  2. ツールバーの一番左にある新しいトレース ボタンを押します。

  3. データをホストしている SQL サーバーに接続します。

  4. [Trace Properties] 画面で、実行ボタンを押します。
    ([イベントの選択] タブには便利な機能がいくつかありますが、目的にはデフォルト設定で問題ありません。)

  5. プログラムを実行します。

デフォルト設定を使用すると、何かがいつデータベースにアクセスするか、およびアクセスに使用するクエリを確認できるはずです。このようにして、クエリが正しいかどうか、または他の問題があるかどうかを確認できます。

過去の Crystal レポートで、データのローカル結合を実行して重複が発生したことも (まれに) 見たことがあります。これが私に起こったとき、問題がどこにあるかを判断するために、レポートの大部分を削除するか、新しいレポートを作成して各ステップでテストする必要がありました.

さらにサポートが必要な場合はお知らせください。

于 2012-09-29T15:49:08.537 に答える