标签: reportdocument

清理Crystal Reports ReportDocument对象使用的资源的最佳方法是什么?

我正在开发一个使用Crystal Reports进行报告的应用程序.它在ReportDocument对象中打开一个给定的报告,完成它需要做的事情,然后关闭报告.

using (var report = OpenReport(reportSourceInfo))
{
    // Do stuff with the report
    report.Close();
}
Run Code Online (Sandbox Code Playgroud)

OpenReport方法对源文件进行一些验证,并返回一个打开的ReportDocument对象.

测试表明,此代码执行了它的目的,并且似乎没有任何问题.我真正建议的问题是当我进行报告项目的代码分析(CA)构建时,我得到以下CA消息:

CA2202:Microsoft.Usage:对象'report'可以在方法'CrystalReportingProvider.ReportExecute(ReportSourceInformation)'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose.

现在显然我可以改变代码,所以我没有得到这个CA警告,但我的问题是我应该吗?

Crystal Reports ReportDocument.Close()方法是否可以正确处理资源清理?该消息似乎表明Close方法调用Dispose方法,但这似乎不正确.

任何意见,将不胜感激.

c# code-analysis idisposable crystal-reports reportdocument

11
推荐指数
1
解决办法
4822
查看次数

查找Crystal Report正在使用的存储过程

我需要检索运行晶体报告的存储过程的名称.有没有办法在C#中使用CrystalDecisions.CrystalReports.Engine.ReportDocument对象执行此操作?

我似乎无法找到一个属性,它将给我存储过程名称.

这甚至可能吗?我经历过几乎所有我能想到的属性.DataDefinition对象具有公式,参数,组名称和运行总计字段的集合,但不包含数据库字段的集合.

编辑:我需要以编程方式执行此操作,因为我有很多报告.我需要选择跳过报告的实际运行并只执行报告将使用的存储过程.因此,当使用该程序将报告信息插入到数据库中时,我希望能够提取其存储过程并单独存储该信息.

c# asp.net crystal-reports reportdocument

5
推荐指数
1
解决办法
6606
查看次数