以编程方式读取CrystalReport的字段值

时间:2011-09-22 01:15:24

标签: c# .net crystal-reports

我正在使用C#.NET以编程方式加载Crystal Report文档(从数据库中获取数据),然后将其导出为PDF格式。

我一直试图从报告中读取字段(abc123)值(我想在文件名中使用它)。我不介意这个领域在水晶报告中的位置;它不会重复,但它必须是报告中的一个字段。

到目前为止我的代码:

// Setup
ReportDocument reportTemplate = new ReportDocument();
reportTemplate.Load(textBox1.Text);
reportTemplate.Refresh();
reportTemplate.ReadRecords();

// Load the current reports name from the report summary information
String ReportName = reportTemplate.SummaryInfo.ReportTitle.ToString();

// Load the current reports "abc123" field from the report
// ????

// Export the report as PDF
reportTemplate.Export();

我试过了:

// Load the current reports "abc123" field from the report
String abcField = ((TextObject)rpt.Section2.ReportObjects["abc123"]).Text
String abcField = reportTemplate.ReportDefinition.ReportObjects["abc123"].ToString();
String abcField = reportTemplate.Rows.ReportDocument.ReportDefinition.ReportObjects["abc123"];

没有运气。任何人都可以提供一些指示吗?我可以使用crystalReportView1对象预览报表,并在那里填充该字段。

1 个答案:

答案 0 :(得分:1)

很遗憾,您无法从代码后面提取计算字段值。在报表引擎接管并执行渲染之前,计算的字段值不可用。您可以在呈现报表之前访问/修改公式定义,但无法访问从后面的代码计算的实际值。即使您添加空白子报表并从主报表中为您尝试访问的字段值添加参数,它也不会在报表引擎呈现之前具有值。你肯定应该找一种方法从你绑定报告的数据中提取它。