如何通过自定义查询生成水晶报表

时间:2013-12-18 19:35:24

标签: sql vb.net crystal-reports

我有以下代码来生成水晶报告

        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

现在它有相同的结果。但我认为它应该只选择一行。 任何人都可以解释这个吗?

1 个答案:

答案 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设置数据源。