打印 – 如何以编程方式生成Crystal Reports的多个副本(详细信息部分)?

我有一个网页,询问用户输入的编号,并根据输入执行SQL查询,然后获取结果以填充Crystal Reports页面.以下是搜索数据库并填充报告的代码:(为简单起见,我删除了大量不会为问题增加值的查询字符串,Crystal Reports字段也是如此)

Dim sql As String = ""
sql = " SELECT * from table1 where input_id = '" & INPUT_NUMBER & "'"

Dim ds As DataSet = getTable(sql)
Dim orpt As New CrystalReport3
CrystalReportViewer1.ReportSource = orpt
orpt.DataDefinition.FormulaFields("fldMaterialID").Text = """" & ds.Tables(0).Rows(0).Item("MATERIAL_ID").ToString & """"
orpt.DataDefinition.FormulaFields("fldMaterialID2").Text = """" & ds.Tables(0).Rows(0).Item("MATERIAL_ID").ToString & """"
orpt.DataDefinition.FormulaFields("fldBar").Text = """" & ds.Tables(0).Rows(0).Item("MATERIAL_ID_BAR_CODE").ToString & """"
orpt.Refresh()

我试图让用户查看报告的多个副本.我已经尝试过:

 orpt.PrintToPrinter(2, False, 0, 1)

但那没用.我搜索了Google,StackOverflow,但我得到的所有解决方案都与带有Saved Queries的Crystal Reports相关,这对我来说不是一个选项.任何帮助深表感谢.

我终于做到了.

对于那些想知道如何或更好的StackOverFlow.com体验的人,我很高兴分享解决方案.

阅读this great article之后,我受到了解决方案的启发,并且能够达到预期的效果

1 – 使用包含相同列数的ADO数据集替换FormulaFields
我是通过在VS.2008中创建一个新的DataSet并将其命名为adoDataSet来实现的.然后向其添加所有必需的列名称(此时没有链接到实际数据,因为稍后将动态提取数据.这就像数据的模板一样).默认情况下,所有列都将为String类型,但对我的情况来说还可以.

3-在Crystal Reports中,我使用DataBase Expert将提到的数据集拉入报表,并使用adoDataSet中的列替换公式字段的位置

4-然后在我的代码中使用数据填充公式字段,我只调用了一个接受SQL查询并返回正常OracleClient数据集的相同函数(因此它可能会根据需要返回多行)

5-但是,此数据集不能直接与Crystal Reports一起使用,因此必须先将其转换为先前创建的相同类型的adoDataSet.所以一个简单的TryCast为我做了这个.

Dim sql As String = ""
sql = " SELECT * from table1 where input_id = '" & INPUT_NUMBER & "'"

Dim ds As DataSet = getTable(sql)
Dim orpt As New CrystalReport3
CrystalReportViewer1.ReportSource = orpt
dim ds1 as New adoDataSet
ds1 = TryCast(ds,adoDataSet)   ' ds is based on OracleClient data set
                        ' while adoDataSet is the one CrystalReports likes to use
orpt.SetDataSource(ds1)

从那里我能够生成尽可能多的副本,因为我拥有数据,并且可以使数据出现我喜欢的次数.

https://stackoverflow.com/questions/7467655/how-can-i-programmaticly-produce-multiple-copies-of-crystal-reports-details-sec

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:打印 – 如何以编程方式生成Crystal Reports的多个副本(详细信息部分)?