【发布时间】:2014-12-17 06:20:16
【问题描述】:
直到今天,我一直能够将 Crystal Reports 直接连接到数据库,而且我从来没有遇到过这样的问题。但是,我现在处于必须基于数据集构建报告的位置。我查看了 SO 的几个教程和其他帖子,但都做了一些略有不同的事情。我认为我所拥有的非常接近,但我错过了一些重要的步骤,因为我没有得到任何数据来显示在我的报告中。这是我到目前为止的代码。
Private Sub RunProductReport(ByVal startDate As String, ByVal endDate As String, ByVal spName As String)
Dim proReportCon As String = My.Settings.eocon
Dim da As New SqlDataAdapter(spName, proReportCon)
da.SelectCommand.CommandType = CommandType.StoredProcedure
da.SelectCommand.Parameters.AddWithValue("@StartDate", Convert.ToString(startDate))
da.SelectCommand.Parameters.AddWithValue("@EndDate", Convert.ToString(endDate))
da.TableMappings.Add("Table", "Tickets")
Dim ds As New dsProductReport
da.Fill(ds)
aReport = New ProductivityReport
aReport.SetDataSource(ds)
crvReport.ReportSource = aReport
End Sub
我已经创建了一个数据集,并且可以从设计器中查看报表中的数据(尽管我没有被要求提供参数,所以我在数据库中获取了所有内容)。报告确实在我的应用程序中打开,但在运行时它是空白的,所以我认为我没有用新数据填充数据集。我有 da.Fill(ds),我认为它应该填充 DataSet,但事实并非如此,我不知道为什么。
正如我提到的,我的参数被忽略了——我发现的大多数示例代码都使用了 Select Statements inline(而不是存储过程),所以我什至可能不会接近这个,但它会根据我阅读的内容进行编译似乎它“应该”工作。
我做错了什么?
【问题讨论】:
-
所以你在
da.Fill(ds)之后放了一个断点,你的数据集是空的? -
试试
aReport.SetDataSource(ds.Tables(0)) -
我确实尝试过断点。它说有两条记录,但我永远看不到数据。但是我不确定它是否不存在,或者我只是没有走在当地树中的正确路径上。我不断打开节点,一遍又一遍地看到相同类型的数据。
-
我按照您的建议设置了数据源,但我仍然在报告中一无所获。所以我认为数据永远不会进入数据集。我承认我对调试器的了解并不多,但是如果我足够多地探索,我通常可以找到我的数据。我没有找到它,所以我认为它不存在。我的设置有什么明显错误吗?
-
我有一个工作函数可以将数据从 SP 获取到 DataSet。让我找到它,以便您查看哪个部分失败(sp、报告或两者)
标签: vb.net stored-procedures crystal-reports dataset