c# - Crystal Reports XI 命令行
问题描述
我是 Crystal Reports 的新手,我希望加载 Crystal Reports 并刷新数据
使用命令行。
基本上,我正在尝试编写一个 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 合理和不合理我知道)或任何其他附加功能。
解决方案
我创建了一个将 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 + ".");
}
}
}
推荐阅读
- reactjs - 使用 React/redux 制作干净的双连续 axios 请求
- google-sheets - Google 表格 - 是否有一个公式可以自动重新格式化从另一张表格中选择的数据?
- spring-boot - Spring Boot 应用程序的多个实例的自定义运行状况指示器
- python-3.x - Flask-Login 问题 - 身份验证不会持续超过 10 秒
- flutter - 在 Flutter 中播放相机快门声音
- java - 使用 Java 模块时绕过旧的 java meta-inf / services
- ag-grid - 更改固定列 ag-grid 的行高
- html - 固定标题 HTML 表格上的额外水平滚动条?
- java - 如果Java中的响应时间长于n秒,则重新运行http post请求?
- javascript - 为先前的掷骰子设置一个变量