复制解决方案,编辑这些文件,打开解决方案,修改报表数据集而不丢失字段。怎么样?

时间:2009-12-10 18:40:34

标签: visual-studio-2008 crystal-reports

免责声明:我不是世界上最凯瑟尔人,所以请耐心等待。

技术:Visual Studio 2008,附带(免费)Crystal Reports。

问题:

我有一个现有的(简单)报告,它的字段使用“ADO.NET DataSet”。我想创建一个非常相似的报告(布局/大部分几乎相同),除了我需要原始报告没有的表中的附加字段(还有一些其他修改,但那些没有给出我的问题)。我们将调用原始解决方案/项目Foo。

好的,所以我沮丧和肮脏。

I take the Foo folder, copy it, and rename it to Bar.

I, of course, rename the sln to Bar.sln. I rename the .csproj to Bar.csproj.

I open these files (and others) and 'Find/replace' Foo references to Bar references.

这很简单(也很快)。我打开解决方案,一切都很好。我在新的Bar解决方案下运行旧报告。在任何地方都没有引用Foo(或者我认为)。

现在,是时候修改报告了。

First, I go to my DataSet1.xsd and add my new table and link it.

Next, I open up the .rpt file and go to the 'Database Expert'.

数据库专家打开,我有两个选项卡(数据,链接)。在“数据”选项卡上,对于“选定的表”,我看到了DataSet1和我的表。很好,我只需要添加我的新表。等等,但是如果你右键单击DataSet1(在选定的表,树视图下),然后选择属性,你会看到类名的'Foo.DataSet1'。

WTF!我以为我替换了所有参考文献。我认为类名引用隐藏在.rpt二进制文件中。我真的希望这指向Bar.DataSet1,而不是Foo.DataSet1。

我怎样才能轻松完成?

在数据选项卡的左侧(在ADO.NET DataSet下),我看到Bar.DataSet1,带有我的新表。如果我将这一个表添加到'Selected Tables'侧,我现在在'Selected Tables'侧有两个DataSet。如果我删除'Foo'数据集(希望只用正确的数据集交换它 - 它具有所有相同的表/字段),我得到:

Remove All Tables MessageBox.
The report is using fields from one or more tables.  Continue?

好吧,这样做,将我的所有字段从我的报告中删除。

我只想添加一张桌子!我只想参考正确的数据集!帮助!

1 个答案:

答案 0 :(得分:1)

您无法直接编辑.rpt文件 - 它不是基于文本的格式。所以你的查找/替换在这种情况下不起作用。 您需要做的是使用报表设计器中的“设置数据源位置”选项并将其指向新数据集。这应该选择字段更改以及新表,但如果不是,您还需要使用“验证数据库”选项。