Crystal reports 为Crystal报表向数据集(xsd)添加列

Crystal reports 为Crystal报表向数据集(xsd)添加列,crystal-reports,dataset,Crystal Reports,Dataset,我正在处理一个报告,需要向其中一个数据集和RPT文件中添加一列,但是当我尝试修改数据集时,我得到一个错误,即指定的表不存在。当我在代码中查看时,似乎最初有一个用于此目的的表,但这种方法已被放弃,现在改为使用附加到报表的代码中的数据集 我的问题是,我需要在报表中添加这个新列,而我似乎无法以某种方式对数据进行处理,以便我可以将我的新字段拖到报表上,因为我找不到所需的数据集部分,因为它不像以前那样存在,而代码内数据集现在取代了它 有没有人能为我指明正确的方向,让我知道如何让这一切顺利进行 更新: 这大

我正在处理一个报告,需要向其中一个数据集和RPT文件中添加一列,但是当我尝试修改数据集时,我得到一个错误,即指定的表不存在。当我在代码中查看时,似乎最初有一个用于此目的的表,但这种方法已被放弃,现在改为使用附加到报表的代码中的数据集

我的问题是,我需要在报表中添加这个新列,而我似乎无法以某种方式对数据进行处理,以便我可以将我的新字段拖到报表上,因为我找不到所需的数据集部分,因为它不像以前那样存在,而代码内数据集现在取代了它

有没有人能为我指明正确的方向,让我知道如何让这一切顺利进行

更新: 这大概就是我的数据集进入Crystal报表的方式

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

我在来自会话的数据集中添加了所需的附加字段,但我试图使用Designer将该附加字段添加到报表中,当我尝试重新构造或更改数据源时,Designer告诉我该表不存在,可能是因为该表仅存在于内存中,我的方法是在Crystal之外实际修改数据。因此,无论这意味着更改查询还是更新.xsd,您都需要在其中添加列。然后在Crystal Reports中,您将转到菜单栏中的“数据库”,如果您的数据源/位置没有更改,请选择“验证数据库”,如果更改,请选择“设置数据源位置”。重新定义数据源后,新列将显示在数据库字段中,您可以将其拖动到报表中。

经过几天的挖掘,找到了许多没有帮助的信息,我终于在2006年的一篇文章中找到了我的问题的答案:

我如何解决我的问题:

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

这种方法在过去对其他数据集非常有效,但对于如何将当前数据集引入本报告,它似乎不起作用。我更新了原始问题,解释了如何将我的数据集绑定到报表。您是报表的原始作者吗?如果是,您最初是如何创建数据源的?创建一个新的数据源来替换会话怎么样?我知道这并不理想,但也许像Session2这样的东西可以让设计师认识到更改。这是问题的一部分,我不是原始设计师,也没有原始设计师或任何文档,我只是做维护的人。从代码中我可以理解,原始数据源是XSD数据集中的一个表,但随后又从该表转移到使用代码隐藏分配给报表的相同内存中数据集。我理解您的痛苦。;)不幸的是,我对这种特殊情况没有任何实际经验。我可能会尝试创建一个新的数据集,该数据集与您当前尝试使用的数据集相同,但要给它一个新名称。然后,设计师可能会看到新的数据集,并必须完全重新处理它,反过来,拉入新列。不过,这可能不是最佳解决方案,在您的特定情况下甚至可能不可能。如果是这样,我很抱歉不能提供更多帮助。我找不到MSDataSetGenerator。在解决方案资源管理器中右键单击.xsd时,只有
openwith…