Crystal reports Crystal Reports-默认参数

Crystal reports Crystal Reports-默认参数,crystal-reports,Crystal Reports,在Crystal reports中,可以为报告参数定义默认值 例如,我可能有一个日期范围,并将默认开始日期设置为12/01/2008,默认结束日期设置为12/31/2008 是否可以在运行时修改这些默认值?例如: 1-默认为当月的第一天和最后一天 2-默认为专有公司会计日历的第一天和最后一天?(即,在数据库中查找) 3-当年的第一天和最后一天 你明白了。这可能吗?如果有人知道怎么做的话,我甚至愿意接受一个涉及运行外部应用程序来访问报告并修改它们的解决方案 编辑: 为了回答Philippe Gro

在Crystal reports中,可以为报告参数定义默认值

例如,我可能有一个日期范围,并将默认开始日期设置为12/01/2008,默认结束日期设置为12/31/2008

是否可以在运行时修改这些默认值?例如:

1-默认为当月的第一天和最后一天

2-默认为专有公司会计日历的第一天和最后一天?(即,在数据库中查找)

3-当年的第一天和最后一天

你明白了。这可能吗?如果有人知道怎么做的话,我甚至愿意接受一个涉及运行外部应用程序来访问报告并修改它们的解决方案

编辑:


为了回答Philippe Grondier提出的问题,大多数报告都是从应用程序内部运行的。我希望得到比在运行时操纵crystal对象更简单的东西;我现在忙着弄清楚API的其他部分。不过,我以后可能会看一看。

您是否计划从crystal reports界面运行crystal report,或作为嵌入到其他程序中的附加模块运行crystal reports(例如,您可以在VB代码中使用crystal reports ActiveX Designer运行时支持-craxdrt.dll)?在最后一种情况下,可以在启动报表之前操作报表的每个对象。然后,可以根据需要更新参数等对象

作为此类运行时更新的一个简单示例,我的报表打印例程将始终检查报表中是否有名为“printedBy”的字段。如果找到此字段,其值将被设置为请求报告的用户的域名,并将打印出来

在更高的级别上,您甚至可以重塑报表SQL字符串,以添加可以从代码继承的特定筛选器。通过这样做,您甚至可能不再需要参数:让您的代码“动态”添加过滤值

编辑:一些代码示例:

(m_report是一个CRAXDRT.report对象,ActiveSession是我当前的会话对象)


我还有另一个功能,可以在运行时更改报表的数据源,以便报表可以在不同的服务器/位置上执行。

阅读我的帖子。也许您可以利用此技术达到您的目的。

您可以提供一个代码示例,在其中测试报表中的特定字段值吗?我找到了您对代码示例的评论。我把它们加到我的答案中。
If m_rapport.ParameterFields.Count > 0 Then
    For i = 1 To m_rapport.ParameterFields.Count
        If m_rapport.ParameterFields(i).Name = "{?PUB_DateDebutPeriode}" Then
            m_rapport.ParameterFields(i).AddCurrentValue CDate(DateValue(sessionActive.dateDebutPeriode))
        End If
        If m_rapport.ParameterFields(i).Name = "{?PUB_DateFinPeriode}" Then
            m_rapport.ParameterFields(i).AddCurrentValue CDate(DateValue(sessionActive.dateFinPeriode))
        End If
        If m_rapport.ParameterFields(i).Name = "{?PUB_id_Personne}" Then
            m_rapport.ParameterFields(i).AddCurrentValue StringFromGUID(clientActif.id_Personne)
        End If
    Next i
Endif