【问题标题】:Crystal Reports XI command lineCrystal Reports XI 命令行
【发布时间】: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我知道合理和不合理)或任何其他附加功能。

【问题讨论】:

    标签: c# visual-studio-2008 crystal-reports .net-3.5 sql-server-2000


    【解决方案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 + ".");
    
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多