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 命令行的主要内容,如果未能解决你的问题,请参考以下文章