将列添加到CrystalSet的DataSet(xsd)

时间:2012-03-05 22:41:31

标签: crystal-reports dataset

我正在处理一个报告,需要在我的一个数据集和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表。

2 个答案:

答案 0 :(得分:3)

经过几天的挖掘,并找到了许多无用的信息,我终于在2006年的帖子中找到了我的问题的答案:

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

我采取了哪些措施来解决问题:

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

答案 1 :(得分:0)

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