我有以下代码来生成水晶报告
Dim ds As New DataSet
ds = DataUtility.GetDataSet(" SELECT * FROM donation ")
Dim objRpt As New t
objRpt.SetDataSource(ds)
CrystalReportViewer1.ReportSource = objRpt
这里getDataSet是一个生成数据集的函数。我还创建了一个水晶报告名称t并显示捐赠表中的一些字段。没事。但我不明白,如果我改变如下
Dim ds As New DataSet
ds = DataUtility.GetDataSet(" SELECT TOP 1 * FROM donation ")
Dim objRpt As New t
objRpt.SetDataSource(ds)
CrystalReportViewer1.ReportSource = objRpt
现在它有相同的结果。但我认为它应该只选择一行。 任何人都可以解释这个吗?
答案 0 :(得分:0)
您的语句的语法应该是正确的。您可以尝试使用ROWCOUNT来查看它是否有所作为:
("SET ROWCOUNT 1 SELECT * FROM donation ")
如果仍然获得与原始查询相同的结果,则可能必须先清除数据集。可能是旧数据以某种方式被保留。
您可以做的是投入Report.Refresh();
来刷新报告数据。
编辑:
试试这段代码:
Dim objRpt As New t
objRpt.SetDataSource("")
objRpt.Refresh()
Dim ds As New DataSet
ds = DataUtility.GetDataSet(" SELECT TOP 1 * FROM donation ")
objRpt.SetDataSource(ds)
CrystalReportViewer1.ReportSource = objRpt
如果根本不起作用,您可能需要查看此post,其中详细描述了如何以编程方式为vb中的Crystal Report设置数据源。