使用Crystal Reports从SQL DB中获取单行
本文关键字:获取 单行 DB SQL Crystal Reports 使用 | 更新日期: 2023-09-27 17:50:11
我遇到了一个问题,我的水晶报表正在创建每个记录的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:'SomeFolder'Client_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中解析并生成所需的字段。澄清一下,我根本没有改变我的代码,我仍然使用相同的查询来获得必要的数据表,但是当将水晶报告绑定到数据库时,我没有将其绑定到表,而是绑定到我创建的视图。