如何在Crystal Report上动态更新SetDatasource

时间:2019-01-07 11:00:40

标签: windows vb.net crystal-reports

我们正在使用Visual Studio 2015和SAP Crystal Reports v13。

步骤1:我正在使用GetCommandText()函数从Crystal报表中获取查询。

下面的代码是GetCommandText()函数。

Dim boReportDocument As CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim boReportClientDocument As CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument = boReportDocument.ReportClientDocument
Dim boReportClientDocument As CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument = boReportDocument.ReportClientDocument
Dim SqlQuery As String = ""
boReportClientDocument.RowsetController.GetSQLStatement(ISCRGroupPath, SqlQuery)

步骤2:我正在尝试将where条件连接到SQL查询中。

第3步:然后执行查询并将其分配给数据集。

步骤4:,然后将“数据集”值设置为CrystalReport.setdatasource。

如果我尝试使用“选择”查询中的“特定”字段来绑定水晶报表,则会收到附件错误。

error image

在相同情况下,如果我尝试将“特定”字段更改为选择*从,则晶体报表将正确加载。但是没有考虑“在哪里” 条件。水晶报表正在加载所有数据。

因此,这是如何将查询更新到Crystal报表中。该查询在VB6中支持,而在vb.net中不支持

下面的代码是VB.net

Dim ReportDoc As New ReportDocument
Dim ConnectionString = "Data Source=test;Initial Catalog=testDB;User ID=sa;Password=123;"
ReportDoc.Load("~\CrystalReportTesting\CrystalReport1")
Dim con As SqlConnection = New SqlConnection(ConnectionString)       
Dim cmd As SqlCommand = New SqlCommand(SqlQuery, con)
Dim adapter As New SqlDataAdapter(cmd)
Dim dtset As New DataSet
adapter.Fill(dtset, "Dataset1")
ReportDoc.SetDataSource(dtset.Tables.Item(0))
CrystalReportViewer1.ReportSource = ReportDoc
CrystalReportViewer1.Refresh()

下面的代码是VB6

fReport.Report.SQLQueryString = fReport.Report.SQLQueryString & _
                            " where ""Invoice"".""Ref"" in (" & 1,2,3 & ") " & sqlOrderby

0 个答案:

没有答案