2012-03-05 41 views
4

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

我的问题是,我需要在报告中添加这个新列,我似乎无法以某种方式获取数据句柄,因此我可以将新字段拖到报告上,因为我无法找到所需的DataSet部分,因为它不像以前那样存在,并且DataSet中的代码现在占据了它的位置。

任何人都能指出我在正确的方向如何去做这项工作?

UPDATE: 这大约是我的数据集是如何获取到水晶报表

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

我已经添加了额外的领域,我需要从会议即将在DataSet,但我想使用Designer将这个额外的字段添加到报表中,当我尝试刷新或更改数据源时,Designer告诉我该表不存在,大概是因为该表只存在于内存中,并且不直接回连到一个SQL表。

回答

3

后挖掘,并发现了大量的信息,这是没有帮助的几天,我终于成功地从2006年在这里找到在后回答我的问题:

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

我做了什么修复我的问题:

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

我的做法是实际修改Crystal以外的数据。因此,无论这意味着更改您的查询,还是更新.xsd,您都会在此处添加专栏。然后在Crystal Reports中,您将转到菜单栏中的“数据库”,如果您的数据源/位置未更改,则选择“验证数据库”,如果存在,则选择“设置数据源位置”。一旦您重新验证数据源,您的新列应显示在数据库字段中,并且您可以将其拖放到报告中。

+0

此方法在过去与其他数据集完美配合,但似乎不适用于如何将此当前数据集引入此报告。我更新了原始问题,并解释了我的数据集如何绑定到报告。 – Adam 2012-03-07 19:06:21

+0

您是该报告的原始作者吗?如果是这样,你最初是如何创建数据源的?如何创建一个新的数据源来取代Session?我知道这并不理想,但也许像Session2这样的东西可能会使Designer识别出这些变化。 – 2012-03-07 21:03:11

+0

这是问题的一部分,我不是原创设计师,也不能访问原始设计师或任何文档,我只是维护人员。从代码中我可以理解,原始数据源WAS是XSD数据集中的一个表格,但是随后使用后面的代码将其转换为分配给该报告的内存数据集中的相同内容。 – Adam 2012-03-07 22:07:59