1

我有基于我手动创建的数据表的 c# 报告 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);
4

1 回答 1

1

如果您在报告中有一个表格,那么您的语法应该可以工作......

report.SetDataSource(myCustomSource);

如果您的主报告有多个表格,请尝试使用:

report.Database.Tables["DATASOURCE_TABLE_1"].SetDataSource(myCustomSource);
report.Database.Tables["DATASOURCE_TABLE_2"].SetDataSource(myOtherSource);

如果您有子报表,则还需要单独设置它们:

report.Subreports[0].SetDataSource(mySubreportDatasource);

或者

report.Subreports[0].Database.Tables[0].SetDataSource(mySubreportDatasource1);
report.Subreports[1].Database.Tables[0].SetDataSource(mySubreportDatasource2);
于 2013-03-11T05:07:27.627 回答