使用Crystal Reports从SQL DB中获取单行



我遇到了一个问题,我的水晶报表正在创建每个记录的pdf页面,尽管数据表被解析为只包含一行的pdf生成。

我有一个基于Id选择单行的查询,然后将其放入数据集数据表并解析为水晶报表生成。

经过检查,我可以确认数据表只包含一行,但输出是pdf的多个页面,每个页面显示不同的行。

有没有人遇到过这种情况,如果有,是什么原因导致我的datatable被忽略了?

代码:

public string CreateMaster(int Id)
        {
            DataTable dt = DataGrabber(Id);// returns a dataset
            ExportOptions expo = new ExportOptions();
            PdfRtfWordFormatOptions form = new PdfRtfWordFormatOptions();
            string op = "";
            string smp = DateTime.Now.ToString("yyyyMMddHHmm");
            DiskFileDestinationOptions dfd = new DiskFileDestinationOptions();
            op = @"E:SomeFolderClient_ID" + Id + "_TS"+ smp + ".pdf";
            using (ClientDdPdf pdf = new ClientDdPdf())
            {
                pdf.PrintOptions.PaperOrientation = PaperOrientation.Portrait;
                pdf.PrintOptions.PaperSize = PaperSize.PaperA4;
                pdf.SetDatabaseLogon(DbUser,DbPass,DbServer,DbDb);
                pdf.SetDataSource(dt); // confirmed that the single datatable from dataset is parsed
                dfd.DiskFileName = op;
                expo = pdf.ExportOptions;
                expo.ExportDestinationType = ExportDestinationType.DiskFile;
                expo.ExportFormatType = ExportFormatType.PortableDocFormat;
                expo.DestinationOptions = dfd;
                expo.ExportFormatOptions = form;
                pdf.Export(expo);
            }
            ReadPdfFile(op);
            return op;
        }

不完全确定为什么会出现这个问题,但它不像我正在解析的自定义查询,而在crystal报告中已经有一个查询。

对此找到的解决方案是将水晶报告映射到视图。从本质上讲,这仍然是从相同的表中获取相同的字段,但它确实在datatable中解析并生成所需的字段。

澄清一下,我根本没有改变我的代码,我仍然使用相同的查询来获得必要的数据表,但是当将水晶报告绑定到数据库时,我没有将其绑定到表,而是绑定到我创建的视图。

最新更新