C#水晶报告PDF例外
我有一个基于我手动创建的数据表的c#report PDF导出项目。我正在使用以下代码尝试设置数据源,并尝试了许多不同的变体,但无法从数据库中获取信息,以正确显示在导出为PDF的报告中。并保存为我电脑的硬盘 但是当运行下面的代码时,我看不到任何PDF被导出。例外是 下面 CrystalDecisions.CrystalReports.Engine.LogOnException:数据库登录失败System.Runtime.InteropServices.COMException:数据库登录失败 我在主报表中设置了两个数据源:合同、合同成员 合同成员分包报告 一个合同可以有多个合同成员 它发生在最后一行 非常感谢您的帮助。下面是我的代码C#水晶报告PDF例外,c#,memory,stream,crystal-reports-2010,C#,Memory,Stream,Crystal Reports 2010,我有一个基于我手动创建的数据表的c#report PDF导出项目。我正在使用以下代码尝试设置数据源,并尝试了许多不同的变体,但无法从数据库中获取信息,以正确显示在导出为PDF的报告中。并保存为我电脑的硬盘 但是当运行下面的代码时,我看不到任何PDF被导出。例外是 下面 CrystalDecisions.CrystalReports.Engine.LogOnException:数据库登录失败System.Runtime.InteropServices.COMException:数据库登录失败 我在
string result;
ContractReport report = new ContractReport();
ContractDTO source = new ContractDTO();
report.Load(Server.MapPath("~/ContractReport.rpt"));
source.Id = 1;
source.Code = "ABC";
source.Title = "LondonEast";
source.Member = new List<ContractMembersDTO>();
source.Member.Add(new ContractMembersDTO() { Id = 1, ContractId = 1, StaffNameEng = "ABC", Position = "Project Manager" });
source.Member.Add(new ContractMembersDTO() { Id = 2, ContractId = 1, StaffNameEng = "DEF", Position = "Project QS" });
source.Member.Add(new ContractMembersDTO() { Id = 3, ContractId = 1, StaffNameEng = "GHI", Position = "Site Manager" });
report.SetDataSource(new[] { source });
if (reportType.Equals("PDF"))
{
try
{
MemoryStream oStream;
oStream = (MemoryStream)report.ExportToStream(ExportFormatType.PortableDocFormat);
字符串结果;
ContractReport=新ContractReport();
ContractDTO source=新ContractDTO();
Load(Server.MapPath(“~/ContractReport.rpt”);
source.Id=1;
source.Code=“ABC”;
来源:Title=“伦敦东部”;
source.Member=新列表();
Add(newContractMembersDTO(){Id=1,contractD=1,StaffNameEng=“ABC”,Position=“Project Manager”});
Add(new ContractMembersDTO(){Id=2,contractD=1,StaffNameEng=“DEF”,Position=“Project QS”});
Add(newContractMembersDTO(){Id=3,contractD=1,StaffNameEng=“GHI”,Position=“Site Manager”});
report.SetDataSource(新[]{source});
if(reportType.Equals(“PDF”))
{
尝试
{
记忆流;
oStream=(MemoryStream)report.ExportToStream(ExportFormatType.PortableDocFormat);
如果报告中只有一个表,那么语法应该可以
如果主报表有多个表,请尝试使用以下方法:
report.Database.Tables["DATASOURCE_TABLE_1"].SetDataSource(myCustomSource);
report.Database.Tables["DATASOURCE_TABLE_2"].SetDataSource(myOtherSource);
如果您有子报表,则还需要单独设置这些子报表:
report.Subreports[0].SetDataSource(mySubreportDatasource);
或
如果报告中只有一个表,那么语法应该可以工作 如果主报表有多个表,请尝试使用以下方法:
report.Database.Tables["DATASOURCE_TABLE_1"].SetDataSource(myCustomSource);
report.Database.Tables["DATASOURCE_TABLE_2"].SetDataSource(myOtherSource);
如果您有子报表,则还需要单独设置这些子报表:
report.Subreports[0].SetDataSource(mySubreportDatasource);
或
我已经多次与此抗争。从未找到明确的答案,但在CR designer中打开报告(与使用的运行时相匹配的版本),并且更改其中的连接信息始终为我解决了这个问题。是的,它有子报告,我在主报告中设置了两个数据源。我对此进行了多次讨论。从未找到明确的答案,但在CR designer中打开报告(与使用的运行时相匹配的版本),并且更改其中的连接信息对我来说总是解决了这个问题。是的,它有子报告,我在主报告中设置了两个数据源。如果我的数据库表实际上是POCO类呢?您的意思是分配每个表(带有输入的POCO类)在报告中单独?我已经在crystal reoprt设置中添加了两个表作为.nET对象如果我的数据库表实际上是POCO类呢?你的意思是单独分配报告中的每个表(带有输入的POCO类)?我已经在crystal reoprt设置中添加了两个表作为.nET对象