繁体   English   中英

水晶报表-默认参数

[英]Crystal Reports - Default Parameters

在Crystal报表中,可以为报表参数定义默认值。

例如,我可能有一个日期范围,并将默认开始时间设置为2008年12月1日,并将默认结束时间设置为2008年12月31日。

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

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

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

3-今年的第一天和最后一天?

你明白了。 这可能吗? 我什至愿意接受一个解决方案,其中涉及运行外部应用程序以访问报告并修改报告(如果有人知道如何做的话)。

编辑:

为了回答Philippe Grondier提出的问题,大多数这些报告都是从应用程序内部运行的。 我希望有一些比在运行时操作水晶对象更简单的方法。 我现在全神贯注于弄清楚该API的其他部分。 不过,我将来可能会看看。

阅读我的文章Crystal Reports:命名日期范围参数 也许您将能够利用此技术来达到目的。

您是打算从Crystal报表界面运行水晶报表还是作为嵌入在另一个程序中的加载项运行(例如,可以在VB代码中使用Crystal Reports ActiveX Designer运行时支持-craxdrt.dll)? 在后一种情况下,可以在启动报表之前对其进行操作。 然后可以根据需要更新诸如参数之类的对象。

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

在更高级别上,您甚至可以重整报表SQL字符串的形状,以添加可以从您的代码继承的特定过滤器。 这样,您甚至可能不再需要参数:让您的代码“即时”添加过滤值

编辑:一些代码示例:

(m_rapport是一个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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM