我有一个用 VS 2008 为 .net 2 编写的应用程序,升级到 VS 2010 并为 .net 4 构建。在这个应用程序中是一个 Crystal Report。报告应该绝对没有数据库交互。我从项目中的一个对象中手动设置了各种 ITextObject 字段。
例子:
to = (CrystalDecisions.CrystalReports.Engine.TextObject)crystalPrint.Section2.ReportObjects["tbName"];
to.Text = visitor.first + " " + visitor.last;
to = (CrystalDecisions.CrystalReports.Engine.TextObject)crystalPrint.Section2.ReportObjects["tbCompany"];
to.Text = visitor.company;
visitor
我从中提取数据的类在哪里。
同样,该报告绝对不应该与数据库交互,但是,它以某种方式认为它应该访问数据库。
这是相关的堆栈跟踪:CrystalDecisions.ReportAppServer.DataSetConversion
编辑:当我打电话时它正在爆炸.PrintToPrinter(1, false, 1, 0);
*编辑/更新*我戳进了app.config文件,我发现了这个小块
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
在应用程序中,我的报告会打印出来。注释掉之后,它就炸了......
编辑 3:
更多源代码:
cryBadge crystalPrint = new cryBadge();
crystalPrint.ReportOptions.EnableSaveDataWithReport = false;
//NOTE: pi is an internal object used to find printer information.
crystalPrint.PrintOptions.PrinterName = pi.PrinterName;
numSize = pi.FindPaperSizeIndex(height, wid);
to = (CrystalDecisions.CrystalReports.Engine.TextObject)crystalPrint.Section2.ReportObjects["tbName"];
to.Text = visitor.first + " " + visitor.last;
to = (CrystalDecisions.CrystalReports.Engine.TextObject)crystalPrint.Section2.ReportObjects["tbCompany"];
to.Text = visitor.company;
crystalPrint.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape;
crystalPrint.PrintToPrinter(1, false, 1, 0);