我编写了一个程序,可以从 Crystal Report 生成 PDF,然后通过电子邮件将这些 PDF 发送给某人。该程序在我的开发机器上运行良好,但是当我将 bin\Release 目录复制到 Windows 2000 Server(我想运行它的机器)时,它开始运行,然后生成此错误和堆栈跟踪:
The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception.
at CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor()
at DailyJobCostSummaryEmail.Program.crptToPDF(String reportFile, String jobNum, String outputLocation) in M:\Projects\DailyJobCostSummaryEmail\DailyJobCostSummaryEmail\Program.cs:line 79
at DailyJobCostSummaryEmail.Program.Main(String[] args) in M:\Projects\DailyJobCostSummaryEmail\DailyJobCostSummaryEmail\Program.cs:line 46
除了从 VISUAL STUDIO 运行时,到处都会出现错误。
.Net 2.0 安装在该机器上,我已经安装了 CRRedist2005_x86.msi 但没有任何效果。我什至收到“向 Microsoft 发送错误报告”对话框,即使我正在使用 try/catch 将异常打印到文件中。即使执行了 catch block ,我的程序也不会正常关闭。
static void Main(string[] args)
{
try
{
String dir = @"JobCostReports";
DataTable jobs = new DataTable();
using (SqlConnection conn = new SqlConnection(connString))
{
String sql = "JC_GetJobsClosedYesterday";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(jobs);
}
List<String> files = new List<String>();
foreach (DataRow row in jobs.Rows)
{
files.Add(crptToPDF(@"JobCost.rpt", row["JobNumber"].ToString().TrimEnd(), dir));
}
Utilities.sendEmail("[toEmail]",
"[FromEmail]",
"Job Cost Summaries for Yesterday",
"Attached are Job cost summaries for the " + files.Count + " jobs closed yesterday.",
files.ToArray());
Console.WriteLine("Email sent.");
}
catch (Exception e)
{
using (StreamWriter writer = new StreamWriter("errors.log", true))
{
writer.AutoFlush = true;
Console.WriteLine();
writer.WriteLine(e.Message);
writer.WriteLine(e.StackTrace);
}
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
Console.Read();
}
finally { }
}
public static String crptToPDF(String reportFile, String jobNum, String outputLocation)
{
using (ReportDocument rpt = new ReportDocument())
{
rpt.Load(reportFile);
rpt.SetParameterValue("@vJobNumber", jobNum);
String output = outputLocation + @"\" + jobNum + "_JobCostSummary.pdf";
rpt.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, output);
return output;
}
}
我没有包括所有正确的引用和使用语句吗?我尝试了很多组合,但没有效果。
最佳答案
这也可能是一个问题,因为 visual studio 附带的 CR 程序集与完整产品的版本不同。
如果您在使用从业务对象下载的运行时时遇到问题,请尝试此处的运行时:
https://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=56787567
关于c# - 使用 Crystal Reports for .net 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342803/