2009-01-16 72 views
1

我想知道我可以动态修改现有的Crystal Report (使用C#和Crystal Reports 2008),以便它可以使用相同的布局报告根本不同的数据(来自同一数据库)。原因是我们正在构建一个允许用户指定的应用程序:如何使用Crystal Reports动态修改报告?

  1. 过滤器仅显示他们感兴趣的数据(即where条款)。
    • [例如,只显示在纽约市建筑]
  2. 指定哪些表显示
    • [例如,显示建筑和地板,但不室]
  3. 指定显示的字段
    • [例如,显示建筑ID,号码,姓名,地址和楼层号]
  4. 更改一节的分组方式
    • [例如,通过建设使用,建立年级组,等]
  5. 更改的图表中使用的字段
    • [例如,由建筑物的使用,由建筑物的使用占用,由建筑ID区域区域]由于用户界面的灵活性也有许多不同种类的“问题”

用户可以尝试报告,我不想为每种可能的组合创建一份报告。有关我正在尝试完成的示例,请参阅下面的图像。左侧的报告描述了按地区分组的建筑物。右侧的报告描述了按网站分组的建筑物。

Report Comparison http://img119.imageshack.us/img119/9052/performancereportcomparbt7.png

编辑:

我会尝试使用报表参数由Philippe Grondier的建议修改的报告是。我通过压制团体取得了成功。当一个组被压制时,组向上滑动以填充空白区域,从而使所有内容排成一行而没有空白。但是,单个文本对象的相同行为并非如此。当文本对象被抑制时,该字段的输出是空的空间。我想要做的就是压制一个文本对象,这样整行就会被压制,这会导致它下面的所有条目“碰撞”一行。我怎样才能做到这一点?

+0

我不确定我完全理解你的意思,但是你可以在特定的组/细节部分中包含文本字段,然后自动抑制空白/空白文本部分。 – 2009-01-21 05:44:46

+0

这是最适合我的解决方案。谢谢! – 2009-01-22 00:04:49

回答

3

根据更新的类型(以及更新所关注的对象),您可以使用免费的craxdrt.dll(设计器运行时库)或非免费的craxddrt.dll(设计器设计和运行时库)。我忘了细节,但你一定会在网上找到它们。

您的问题:

  1. 过滤器:有可能在运行时更新报表对象的SQLQueryString或更新预先声明的参数,以便它们将被添加到“去哪儿”的条款。我认为添加参数仅限于craxddrt dll,但可以使用craxdrt dll来更新现有的参数。您可以使用CR界面来更新这些参数,或者通过代码来实现:一个想法是更新客户端界面中的这些值(例如从活动窗体)并以编程方式更新它们。例如,请检查here
  2. 隐藏表格:我不认为'隐藏表格'是有意义的,因为您需要您的表格才能使用所有关系来计算您的汇总值。因此,您可以向用户建议查看/隐藏详细信息或查看/隐藏不同分组级别的可能性。这可以通过免费的craxdrt库和报告对象的“区域”收集/“压制”方法轻松完成。
  3. 再一次,玩报告的不同领域似乎是这里最好的解决方案
  4. 我建议你不要去考虑它!更改数据顺序可能会导致不可预知的结果,特别是在计算组级中间摘要时。根据您的请求,您可以坚持提案(2),通过在报告中显示不是特定的组,或者对于简单的表单(仅限1个组),以编程方式更新运行时将用于组定义的参数式。
  5. 返回到建议(2):建立一个完整的报告将显示所有预期的数据,然后隐藏/显示报告的不同部分。

还有另一个可用的代码示例here,向您展示如何在运行时将报告连接更改为不同的数据库/不同的表。

相关问题