我们正在使用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。
如果我尝试使用“选择”查询中的“特定”字段来绑定水晶报表,则会收到附件错误。
在相同情况下,如果我尝试将“特定”字段更改为选择*从,则晶体报表将正确加载。但是没有考虑“在哪里” 条件。水晶报表正在加载所有数据。
因此,这是如何将查询更新到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