水晶报表中如何刷新数据集架构

   我们在设计水晶报表时,经常会因为修改了水晶报表所依赖的DataSet架构,而需要刷新报表中的Database Fields。由于有许多人不知道如何进行刷新,而采用了一种比较“暴力”的方式,即移除原来的Database Fields,然后重新进行加载,这会带来一个问题,即在移除时将删除所有已经加载到报表页面上的数据字段,破坏了报表原来的设计样式。

如何解决?

    由于这方面很难找到比较详细的文档说明,以下是自己通过试控而找到的方法,以供参考:

  1. 首先,编译强类型DataSet所在的工程,因为水晶报表是通过反射机制从程序集中提取DataSet架构的,即使它和报表在同一个工程中。
  2. 打开报表设计文件,在其Field Explorer中,用鼠标右击Database Fields结点,打开弹出菜单,并选择Log On/Off Server...项,将打开Data Explorer窗口。
  3. 在Data Explorer窗口中,选择左边树中的Project Data->Current Connection节点,选择当前报表所引用的DataSet,点击Log Off按钮,将断开与数据源的连接,此时该结点下被选中Log off 的DataSet将消失不见。
    接着,展开Project Data->ADO.NET DataSet结点,在展开时,报表设计器会自动寻找报表所在程序集中包含和其引用的程序集中所包含的所有强类型的DataSet派生类。选中报表所引用的DataSet,点击Log On按钮,将重新建立与数据源的连接。此时,收缩Current Connection结点然后重新展开,将看到所引用的DataSet被重新显示出来。
  4. 关闭上面的窗口,回到 Fields Explorer,在 Database Fields 结点上打开弹出菜单,选择 Set Location项打开 Set Location 窗口。
    在Set Location中,从 Current Data Source 中选择要刷新的 DataSet 或 Table ,并从Replace with.的树中选择所引用的 DataSet 或其中对应的 Table,点击 Replace 按钮,将使用最新的 DataSet 架构替换水晶报表中原来存在的DataSet 架构。
    所有需要更新的DataSet都做完后,关闭窗口。
  5. 在 Fields Explorer 中,展开 Database Fields 下面的子结点,看看所有的架构(字段)是不是已经更新了!

   这种方式,可以在更新了DataSet架构后,而不用破坏原来报表中已经存在的设计,当然原来某个字段已经被删除了的情况除外了!

--End--

posted on 2006-01-07 14:51  流浪狗  阅读(3207)  评论(3编辑  收藏  举报