我创建了一个 Crystal 报表(交叉表)。我没有使用任何数据集,而是使用 Crystal 报表中的向导从我的数据库模式中调用过程 (提供者是用于 Oracle 的 Microsoft OLEDB 提供者,之后我提供了我的数据库凭据(即模式、用户名、密码)并选择了过程并选择了我想在报告中显示的列)。
我需要从前端传递 5 个参数来生成报告。查看 Crystal 报表预览时,通过给定参数,报表可以正常运行。
现在我想从前端 (vb.net) 传递这 5 个参数以在 CrystalReportViewer 中显示报告。请建议将代码写入 aspx.vb 文件。 (PS:- 我确实浏览了其他论坛并找到了一些代码,但他们都给出了一些或其他错误,所以我发布了一个这样我可以获得特定于我的要求的代码)。
提前致谢..
最佳答案
我已经让报告开始工作了... 我写了下面的代码:
Dim RptDocument As New ReportDocument
RptDocument.Load(Server.MapPath("rpt\Report.rpt"))
RptDocument.SetParameterValue("param1", Session("param1"))
RptDocument.SetParameterValue("param2", ddlparam2.SelectedValue)
RptDocument.SetParameterValue("param3", param3.text)
RptDocument.SetParameterValue("param4", param4.text)
RptDocument.SetParameterValue("param5", param5.text)
'Set login info
Dim myLogin As CrystalDecisions.Shared.TableLogOnInfo
Dim myTable As Table
For Each myTable In RptDocument.Database.Tables
myLogin = myTable.LogOnInfo
myLogin.ConnectionInfo.ServerName = "server name"
myLogin.ConnectionInfo.DatabaseName = ""
myLogin.ConnectionInfo.UserID = "userid"
myLogin.ConnectionInfo.Password = "pwd"
myTable.ApplyLogOnInfo(myLogin)
myTable.Location = myTable.Location
CrystalReportViewer1.ReportSource = RptDocument
创建了一个系统 DNS 并且必须添加 Oracle.DataAccess.dll
来引用和一个类文件(功能与 connectooracle.vb 类文件中的相同,但名称不同),也设置global.asax 中的连接以引用该类连接并使用
Imports Oracle.DataAccess.Client
而不是 Imports System.Data.OracleClient
(以避免歧义)...
这以某种方式使它起作用,并且可能有一些其他解决方案..:)
(For ref:- Adding myLogin.ConnectionInfo.IntegratedSecurity = True gave me this error--
Logon failed. Error in File C:\DOCUME~1\Username\LOCALS~1\Temp\Report {1AG3DD86-141D-43YA-B6A2-AEDF3459AE49}.rpt: Unable to connect: incorrect log on parameters.)
关于vb.net - 如何将参数从 vb.net 代码传递给 Crystal 报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11322735/