VS 2008 で .net 2 用に作成され、VS 2010 にアップグレードされ、.net 4 用にビルドされたアプリがあります。このアプリには Crystal Report があります。レポートによるデータベースとの対話は絶対に行わないでください。プロジェクト内のオブジェクトの 1 つからさまざまな 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);