当我调用ExportToDisk()时。在某些机器上做得很好。但是在某些机器上抛出异常。
Exceptoion
此字段名称未知。 文件C中的错误:\ Windows \ TEMP \ RPTH010_Report01 {C0D0E863-1741-4917-A455-B23347EA4FD6} .rpt: 公式错误<填单日期>。 'numberVar RocDateNumber:= {RPTH010_Report01.D01_APLDATE};' 此字段名称未知 此字段名称未知。 文件C中的错误:\ Windows \ TEMP \ RPTH010_Report01 {C0D0E863-1741-4917-A455-B23347EA4FD6} .rpt: 公式错误<填单日期>。 'numberVar RocDateNumber:= {RPTH010_Report01.D01_APLDATE};' 此字段名称未知。
堆栈跟踪
CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(例外e) CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext) CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToDisk(ExportFormatType formatType,String fileName) JcsWebSolution.Report.CRDocument.SaveToDisk() mOffice.Models.Report.ASSET.RPTH010_Report01.PrintReport() mOffice.Models.Report.ReportBase.PrintProcess()
我的系统
我尝试通过
修复错误我尝试打印没有公式的报告,它可以很好地导出。我添加了刚刚破坏的concat字符串公式。
我的代码
public class result
{
public string { get; set;}
}
public bool DoExport()
{
List<result> test = new List<result>();
test.Add(new result { test = "123" });
DataTable input = ListToDataTable(test);
input.TableName = "test";
m_RptDataSet.Tables.Add(input);
ReportDocument m_ReportDocument = new ReportDocument();
m_ReportDocument.Load(HttpContext.Current.Server.MapPath("~/RPT/test.rpt"));
m_ReportDocument.SetDataSource(input);
m_ReportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "test.pdf");
m_ReportDocument.Close();
m_ReportDocument.Dispose();
m_ReportDocument = null;
}
public DataTable ListToDataTable<T>(List<T> list)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
DataTable dt = new DataTable();
object[] values;
for (int i = 0; i < props.Count; i++)
{
PropertyDescriptor prop = props[i];
dt.Columns.Add(prop.Name, prop.PropertyType);
}
foreach (T item in list)
{
values = new object[props.Count];
for (int i = 0; i < values.Length; i++)
{
values[i] = props[i].GetValue(item);
}
dt.Rows.Add(values);
}
return dt;
}
concat字符串公式
{RPTH040_Test.test} +“测试功能”
但在其他机器上就好了。有没有人有同样的问题?
更新
我测试了一个新报告,其中包含3条没有公式的记录。我发现报告可以导出,但不显示记录。所以我猜主要原因是SetDataSource()在我的机器上不起作用(Windows 2012 R2)。 我尝试将代码添加到Web.config。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
它仍然不起作用。有谁知道这个?
答案 0 :(得分:1)
在各个存储过程中进行一系列更改之后,我在Crystal Report中遇到了同样的错误,最后我发现我在我的公式中使用了一个字段,这个字段已从我的sp中删除了(之前这个字段是在我创建的时候公式然后从SP中删除,所以我用适当的更新字段更新了我的公式,然后它就消失了。
希望它会对某人有所帮助。
答案 1 :(得分:0)
我从SCN得到了主要结果。
CR Win 10.5(VS for VS 2008)与Win 2012不兼容/测试。它也与VS 2013不兼容。 将VS升级到CR 2013(13.0)。
普山
更多细节 - &gt; Windows server 2012 R2 SetDataSource doesn't work | SCN