Crystal reports 在运行时设计报表
我正在使用vb.net开发一个windows窗体应用程序,它有几个包含DataGridView的窗口。客户机最近提出了能够打印每个表的数据的愿望 几个月前,我成功地使用Crystal reports设计并实现了我的第一份报告,我的第一直觉是使用Crystal reports来完成这项工作。然而,因为我已经确切地知道我想在第一份报告中显示哪些列和数据,所以我可以在设计报告时考虑到这一点,所以这没有问题 现在,我面临的挑战是,我不知道报告中要打印的列的确切数量,所以我担心我必须以编程方式设计报告,所以我的问题是Crystal reports 在运行时设计报表,crystal-reports,reporting,report,Crystal Reports,Reporting,Report,我正在使用vb.net开发一个windows窗体应用程序,它有几个包含DataGridView的窗口。客户机最近提出了能够打印每个表的数据的愿望 几个月前,我成功地使用Crystal reports设计并实现了我的第一份报告,我的第一直觉是使用Crystal reports来完成这项工作。然而,因为我已经确切地知道我想在第一份报告中显示哪些列和数据,所以我可以在设计报告时考虑到这一点,所以这没有问题 现在,我面临的挑战是,我不知道报告中要打印的列的确切数量,所以我担心我必须以编程方式设计报告,所
如果您能帮助我实现此功能,我将不胜感激。您有两种方法可以做到这一点,一种很难,另一种很容易。首先,让我们把最难的那一个让开。CR有一个功能齐全的库,可以让您几乎从头开始创建报告。它被称为RAS库。但这是非常复杂的,对于Crystal的新手来说,这并不是最好的事情 下一个解决方案,也是最简单的,是创建一个包含所有可能需要的字段的报告,然后使用ReportObject模型动态隐藏不需要显示的字段。因此,如果您的报告中有5到10列,请在报告中创建所有10列。然后在你的应用程序中,如果你不需要第10列,就隐藏它。大概是这样的:
CrystalDecisions.CrystalReports.Engine.ReportDocument myReport;
myReport.Load("..your file...");
CrystalDecisions.CrystalReports.Engine.TextObject myField;
myField =(CrystalDecisions.CrystalReports.Engine.TextObject)HealthRounds.ReportDefinition.ReportObjects["Field10"];
myField.ObjectFormat.EnableSuppress = true;
...
如果你真的需要它的动力,也许更容易,看看。 您需要做的示例看起来有些简单:
Proj.Open( @“c:\Reports\artikel.lst” , LlDomFileMode .Create,
LlDomAccessMode .ReadWrite, true );
ObjectReportContainer container= new
ObjectReportContainer (Proj.Objects);
container.Position.Left = “0” ;
container.Position.Top = “0” ;
container.Position.Width = “150000” ;
container.Position.Height = “200000” ;
SubItemTable table = new SubItemTable
(container.SubItems);
table.TableID = “Customers” ;
TableLineData dataLineNew = new
TableLineData (table.Lines.Data);
dataLineNew.Name = “Created dynamically” ;
TableFieldText textCol = new
TableFieldText (dataLineNew.Fields);
textCol.Contents = “Product.No” ;
TableFieldBarcode barcodeCol = new
TableFieldBarcode (dataLineNew.Fields);
barcodeCol.Contents = “Barcode(Product.No, ‘PDF417’)” ;
Proj.Save();
Proj.Close ();
您至少需要“-Edition”才能使用此功能。
我已经用这个成熟的软件完成了一些很好的程序。这很容易做到,我只想告诉你一些新的方法来完成这些步骤: