Crystal Reports XI 命令行

Posted

技术标签:

【中文标题】Crystal Reports XI 命令行【英文标题】:Crystal Reports XI command line 【发布时间】:2019-07-19 18:44:44 【问题描述】:

我是 Crystal Reports 的新手,我希望加载 Crystal Reports 并刷新数据

step 1

step 2

step 3

使用命令行。

基本上,我正在尝试编写一个 C# Windows 窗体应用程序来调用调用 Crystal Reports 的 .bat 文件,方法是传递参数来填充我为截图附加的窗口。

我的上级告诉我这是很有可能的,但我从数小时的谷歌搜索中了解到这不太可能,除非我使用第三方工具(主要是)或编写我自己的应用程序到。

我也对其他解决方案持开放态度,因为我需要向我的上级提出解决方案列表,他一直认为 Crystal Reports 本身具有命令行支持,无需外部工具或第三方库支持。

另外,我知道可以为 Visual Studio 2008 安装 Crystal Reports 运行时支持(我正在使用这个版本),但是,我被告知这是不可能的,因为整个过程是在 Windows Server 上完成的2003 PC,无法在那里安装任何东西。

无论如何,我为什么要开发一个 C# Windows 窗体应用程序来调用将参数传递给 Crystal Reports 的 .bat 文件? 这是因为有人告诉我,Crystal Reports 对于非程序员工作人员生成报告并不友好,我的意思是生成报告是刷新数据,如上图所示,然后打印出来。

基本上,开发 C# windows 窗体应用程序的一些额外功能是有一个包含所有商店代码的下拉框,因此非技术员工知道如何选择它而不会弄乱任何东西(听起来 50/50我知道合理和不合理)或任何其他附加功能。

【问题讨论】:

【参考方案1】:

我创建了一个将 Crystal Report 文件呈现为 PDF 的解决方案,同时还填充(默认)参数并从此命令行应用程序设置登录信息:

https://github.com/gojimmypi/crMailer

像这样将 PDF 保存到文件中:

crReportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, OutputFileWithPath);

这样分配的参数:

static void crAssignDefaultParameters()

    if (HasError)
    
        VerboseWriteline("Skipping crAssignDefaultParameters after error was encountered.");
        return;
    

    foreach (ParameterField item in crReportDocument.ParameterFields)
    
        // Console.WriteLine("0 In use? 1", item.Name, crParameterInUse(item.Name));

        if (crParameterInUse(item.Name))
        
            if (item.DefaultValues.Count == 0)
            
                VerboseWriteline("Warning: no default value for " + item.Name + " assigned a value of empty string.");

                crReportDocument.SetParameterValue(item.Name, "");
            
            else
            
                VerboseWriteline("Assigned default value of " + item.DefaultValues[0] + " for " + item.Name + "." );
                crReportDocument.SetParameterValue(item.Name, ((CrystalDecisions.Shared.ParameterDiscreteValue)item.DefaultValues[0]).Value);
            
        
        else
        
            VerboseWriteline("Skipping " + item.Name + ", assuming this is a linked subreport parameter for " + item.ReportName + ".");

        
    

【讨论】:

以上是关于Crystal Reports XI 命令行的主要内容,如果未能解决你的问题,请参考以下文章

crystal reports中怎样快速绘制表格

Crystal Report 7替代行颜色

水晶报表 如何设置水晶报表 crystal reports 的字段自动换行

具有函数 ORA-08103 的 Oracle 存储过程

会用水晶报表crystal reports的请进

使用Crystal Reports ReportDocument