【问题标题】:Adding a column to a DataSet (xsd) for a Crystal Report将列添加到 Crystal Report 的数据集 (xsd)
【发布时间】:2012-03-23 10:16:10
【问题描述】:

我正在处理一份报告,需要将一列添加到我的一个数据集和 RPT 文件中,但是当我尝试修改数据集时,我收到指定表不存在的错误。当我查看代码时,看起来最初有一个表用于此目的,但这种方法已被放弃,现在改用附加到报告的代码中的 DataSet 来完成。

我的问题是我需要在报告中添加这个新列,但我似乎无法以某种方式处理数据,因此我可以将新字段拖到报告中,因为我找不到所需的 DataSet 部分,因为它不像以前那样存在,现在代码中的 DataSet 取而代之。

任何人都可以为我指出正确的方向来完成这项工作吗?

更新: 这大致就是我的数据集如何进入 Crystal Report 的方式

private Sub ShowReport()
    Dim dsStatsForPlanned As DataSet = Nothing
    dsStatsForPlanned = DirectCast(Session(CreateSessionKey()), DataSet)
    plannedProductRpt.SetDataSource(dsStatsForPlanned)
End Sub

我在来自 Session 的 DataSet 中添加了我需要的附加字段,但我正在尝试使用 Designer 将这个额外字段添加到报表中,当我尝试刷新或更改数据源时,Designer 告诉我认为该表不存在,大概是因为该表只存在于内存中,并且不直接绑定到 SQL 表。

【问题讨论】:

    标签: crystal-reports dataset


    【解决方案1】:

    我的方法是在 Crystal 之外实际修改数据。因此,无论这意味着更改您的查询还是更新 .xsd,您都可以在此处添加列。然后在 Crystal Reports 中,您将转到菜单栏中的“数据库”,如果您的数据源/位置未更改,则选择“验证数据库”,如果有,则选择“设置数据源位置”。重新验证数据源后,新列应出现在数据库字段中,您可以将其拖到报表中。

    【讨论】:

    • 这种方法在过去与其他数据集完美配合,但它似乎不适用于如何将当前数据集引入此报告。我更新了原始问题,解释了我的数据集如何绑定到报告。
    • 您是该报告的原作者吗?如果是这样,您最初是如何创建数据源的?创建一个新的数据源来替换 Session 怎么样?我知道这并不理想,但也许像 Session2 这样的东西可能会让 Designer 认识到这些变化。
    • 那是问题的一部分,我不是原设计者,也无权访问原设计者或任何文档,我只是做维护的人。根据我从代码中可以理解的内容,原始数据源是 XSD 数据集中的一个表,但随后使用后面的代码从该表转移到分配给报告的相同内存数据集。
    • 我理解你的痛苦。 ;) 不幸的是,我对这种特殊情况没有任何实际经验。我可能会尝试做的是创建一个与您当前尝试使用的数据集相同的新数据集,但给它一个新名称。然后也许设计者会看到新的数据集,必须完全重新处理它,然后再拉入新的列。但是,这可能不是最佳解决方案,在您的特定情况下甚至可能都不可能。如果是这样,我很抱歉不能提供更多帮助。
    【解决方案2】:

    经过几天的挖掘,发现了很多没有帮助的信息,我终于在 2006 年的帖子中找到了我的问题的答案:

    http://sstjean.blogspot.com/2006/12/xsdexe-and-msdatasetgenerator-operate.html

    我做了什么来解决我的问题:

    • 在文本编辑器中手动编辑 XSD 文件并添加我需要的列。这使得它们在 Visual Studio 中查看时出现在我的 XSD 中。
    • 为 XSD 运行指定的自定义工具以重新生成数据集。就我而言,它是 MSDataSetGenerator。这在 VS 的“属性”选项卡上列出,我可以在解决方案资源管理器中右键单击 XSD 并选择“运行自定义工具”。
    • 打开我的 RPT 文件并运行验证数据库。这终于表明数据库已更改并且正在更新报表,我现在在报表设计器中看到了我的新字段。

    【讨论】:

    • 我找不到 MSDataSetGenerator。当我在解决方案资源管理器中右键单击 .xsd 时,只有 open with ...
    猜你喜欢
    • 2012-01-08
    • 2023-03-28
    • 2011-08-06
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多