Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Crystal报告在我对dataset使用查询时重复这些项_C#_Asp.net - Fatal编程技术网

C# Crystal报告在我对dataset使用查询时重复这些项

C# Crystal报告在我对dataset使用查询时重复这些项,c#,asp.net,C#,Asp.net,我是水晶报告的新手。将数据集中的数据绑定到crystal报表时显示两次或三次 我使用的是SQL2005和VS2008 我在调试时也签入了SQL和dataset,但在dataset中只有5条记录,但在我的水晶中显示了10条记录 下面是我的代码: ReportDocument doc = new ReportDocument(); sda = new SqlDataAdapter(" SELECT ac_mstr.AC_DESC, TRAN_HDR.DOC_DT, TRAN_DTLS.GL_COD

我是水晶报告的新手。将数据集中的数据绑定到crystal报表时显示两次或三次

我使用的是SQL2005和VS2008

我在调试时也签入了SQL和dataset,但在dataset中只有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;

有人能帮我吗?

错误来自您的查询:

    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

这会使您的数据出现两次,因此请更改您的查询。

Crystal Reports会对数据执行意外操作。开始调试的一个好地方(除了在编辑器中打开crystal报表并四处单击)是使用SQL Server Profiler。有关更详细的教程,请访问

需要注意的是,尽管SQLServer2005Express可以与SQLServerPro文件管理器一起使用,但它并没有与程序捆绑在一起

为了方便您,我附上了一套基本的说明:

-

  • 打开SQL Server探查器:
    • 从开始菜单:\All Programs\Microsoft SQL Server 2005\Performance Tools\SQL Server Profiler
    • 来自SQL Server Management Studio:Tools\SQL Server Profiler
  • 按下工具栏上最左侧的新跟踪按钮

  • 连接到承载数据的SQL server

  • 在跟踪属性屏幕上,按运行按钮。
    (它们是“事件选择”选项卡上的许多常用功能,但出于您的目的,默认设置应该可以。)

  • 运行你的程序

  • 使用默认设置,您应该能够看到任何东西何时访问您的数据库,以及它们使用什么查询进行访问。通过这种方式,您可以查看您的查询是否正确,或者是否存在其他问题

    在过去的crystal报告中,我还看到(很少)对数据执行本地联接,从而导致重复。当这种情况发生在我身上时,我不得不删除报告中的大块内容,甚至创建一个新的报告并在每个步骤对其进行测试,以确定问题所在


    如果您需要其他帮助,请告诉我。

    如果我猜您的Crystal report包含联系SQL server所需的信息,因此您的数据集是第一组值,而来自服务器的数据集是第二组值。如果没有你的水晶报告和更多的时间,我无法判断。您还可以在报告中保存值。尝试运行SQL探查器,查看crystal report是否正在查询数据库。尝试在编辑器/查看器中打开crystal report,查看其中是否保存了数据(或尝试更改服务器上的数据,查看是否获得了新值的副本)。在crystal report中,预览时它包含一条记录,但在运行时它只包含重复的数据。如何运行crystal report的SQL事件探查器?K但此查询只返回一次值。在调试时,我签入了数据集。在dataset中,它一次显示一个值,但在crystal中查看时,它包含两个值