Crystal Report

时间:2017-02-02 19:01:19

标签: c# .net visual-studio-2015 crystal-reports dataset

我继承了将字段添加到现有报告中的任务。

此报告在带有水晶报告的Visual Studio 2015中完成。它有一个数据源,链接到数据集(.xsd)的[table]。但是当它在C#中加载时,它会将 datable 设置为其数据源。

_reportDocument.Load(HttpContext.Current.Server.MapPath("/Reports/MyReport.rpt"));
_reportDocument.SetDataSource(mydatatable);

遗憾的是,我的字段属于与已经“链接”的字段不同的[表格]。我最终想通了我需要将这个新表添加到数据集中(它根本不是它的一部分!),并将此数据集的表添加到报表设计器中的数据源中,以便它显示在Field Explorer中 - '数据库字段'。

这是我尝试将两个表链接在一起的大约5千种不同方法,以便显示我遗漏的字段。无论我做了什么,[newfield]总是坚决地在报告中保持空洞。更重要的是,如果我没有将表之间的链接设置为“OUTER”,则整个报告显示为空。 (这应该没关系)

我最终在C#中找到了数据表('mydatatable')代码,并相应地对其进行了修改以保存我丢失的字段。当我在运行时检查时,数据(至少在C#中)是100%正确的。然而,报告中没有任何改变。

问题::

1)第一张表中的所有内容都显示正常。从我添加到数据集中的“新”节目中看不出任何东西 - 永远。

2)在c#中设置为数据源的数据表的内容似乎对报告的影响不是0,而是显示了哪些记录。

更新

所以我已经知道.XSD文件只是作为一种水晶报表定义,无论为它设置什么DataSource。另外,任何尝试使用多于1个表定义(xsd中超过1个表)的尝试似乎都失败了,我不知道为什么 - 或者为什么它允许你链接多个表,如果它无论如何都会失败。

有了这些知识,.XSD实际上并不需要链接到任何数据库。我将那些额外表所需的列定义硬编码到已经使用的列中。在Crystal报表中更新数据集源后,我将新字段添加到报表中,最终完整显示存储过程数据。

希望这可以帮助任何遇到同样问题的人。

0 个答案:

没有答案