CR13 SP26 Visual Studio错误CrystalReports.Engine.DataSourceException

2020-08-25 19:25发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我一直在使用CR13SP25在V...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我一直在使用CR13SP25在Visual Studio 2017中工作,并去添加另一个报告。 但是,缺少工具箱中的"报告"文件夹。 "添加新"菜单中也缺少Crystal Reports。 我升级到CR13 SP26,将这些菜单项带回了,但是现在在尝试加载数据集时抛出错误。 我返回到SP25,并很好地打印了报告,但是菜单项再次丢失。 数据集来自XML序列化(下面发布的代码)。 关于如何使它在任何一个程序包中工作都知道吗?

CrystalDecisions.CrystalReports.Engine.DataSourceException:文件temp_7860d069-b58b-4be6-847f-941a1b6bd46d 9440_12448_ {F0FC6F00-172F-45E1-A817-C49361900543}中的错误。rpt:
无法加载数据库信息。 ---> System.Runtime.InteropServices.COMException:文件temp_7860d069-b58b-4be6-847f-941a1b6bd46d 9440_12448_ {F0FC6F00-172F-45E1-A817-C49361900543} .rpt中的错误:
无法加载数据库信息。 在CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(Object val,Type type)
在CrystalDecisions.ReportAppServer.Controllers.DatabaseControllerClass.ReplaceConnection(Object oldConnection,Object newConnection,Object parameterFields,Object crDBOptionUseDefault)
在CrystalDecisions。 CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val,Type type)
---内部异常堆栈跟踪的结尾---在CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)
处的CrystalDecisions。 CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val,Type type)
在CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet)

源代码:

命名空间SORReceipts.Receipts
{
公共部分类dspReceiptModify:Form
{
受保护的静态字符串_username = System.Security.Principal.WindowsIdentity.GetCurrent()。Name.Split('\ \')[1];
私有静态只读log4net.ILog日志= log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod()。DeclaringType);
受保护的静态DataSet数据= null;

public dspReceiptModify(ReceiptTransaction receive)
{
log.Info ("已修改打印收据开始" );
InitializeComponent();
log.Info ("-InitializeComponent complete" );
log.Info ("打印收据修改已完成");
PrintReceipt( 收据);
}

公共无效PrintReceipt(ReceiptTransaction收据)
{
receive.DateStringForPrinting = receive.TransactionDateStamp.ToString(" MM/dd/yyyy h:mm tt");
receive.DatePrinted = DateTime.Now.ToString(" MM/dd/yyyy h:mm tt");

try
{
var xmlDocument = new XmlDocument();
var serializer = new XmlSerializer(receipt.GetType());

rptReceiptModify prntreceipt = new rptReceiptModify();

使用(var stream = new MemoryStream())
{
serializer.Serialize(流,收据);
stream.Flush();
stream.Seek(0,SeekOrigin.Begin);
xmlDocument.Load(stream);
}

var context =新的XmlParserContext(null,新的XmlNamespaceManager(new NameTable()),null,XmlSpace.None);
var reader =新的XmlTextReader(xmlDocument.OuterXml,XmlNodeType.Document,context);

数据=新的DataSet();

data.ReadXml(阅读器);

SetPrinterSettings.SetPrinter(prntreceipt);

字符串打印机= prntreceipt.PrintOptions.PrinterName .ToString();

prntreceipt.SetDataSource(data);
crystalReportViewer1.ReportSource = prntreceipt;

字符串_prntFileName =" Reciept_" +收据.TransactionID.ToString ()+" _" +收据.DatePrinted.Replace("/"," _")。Split('')[0];
prntreceipt.SummaryInfo.ReportTitle = _prntFileName;

prntreceipt。 PrintToPrinter(1,false,0,0);
log.Info ("-收据 " + receive.TransactionID.ToString()+" Printed");
crystalReportViewer1.ReportSource = null;
data.Reset();
}
catch(异常)
{< br> LoggingHelper.Exceptionthrown("无法打印修改的收据",例如);
if(UserMessaging.PrintFailed())
{
PrintBackupReceipt(data,receive);
}
}
}