【发布时间】:2018-06-15 07:01:39
【问题描述】:
我使用水晶报表创建了一个报表。
目前,我使用 User DSN 作为其数据源。
但主要问题是报告仅在我设置 trustedconnection = TRUE 时从主 PC 打开。
我可以将 LAN pc 中的 DSN 更改为 Trusted Connection 为 FALSE,并通过 ODBC 手动设置 UserId 和 Pwd。
通过这样做,报告可以在 LAN 中完美运行,但我的另一个问题是我必须
在程序运行时更改数据库。
所有数据库结构(模式)、表、过程、视图都是相同的,只是名称不同。
现在,当我以编程方式从 DSN 更改默认数据库时,一切正常。
但这仅适用于主 PC,因为我可以在受信任的 Connection = TRUE 时更改 DSN.. 并且 我无法以编程方式输入 DSN 的密码(已搜索)。
我尝试了以下更改数据库的代码,CrystalReportViewer1 成功打开报表,没有任何错误。
Dim myDBConnectionInfo As New ConnectionInfo()
With myDBConnectionInfo
.ServerName = My.Settings.SysSvName
.DatabaseName = Pubdbname
.UserID = “sa”
.Password = “sa123”
End With
orptname.Load("JVR.rpt")
orptname.SetParameterValue("@CompYear", PubYear1)
orptname.SetParameterValue("@CompNo", mComp1)
orptname.SetParameterValue("@fdatee", Format(CDate(FromDate.Text), "MM/dd/yyyy"))
orptname.SetParameterValue("@tdatee", Format(CDate(ToDate.Text), "MM/dd/yyyy"))
orptname.SetParameterValue("cfdate", Format(CDate(FromDate.Text), "MM/dd/yyyy"))
orptname.SetParameterValue("ctdate", Format(CDate(ToDate.Text), "MM/dd/yyyy"))
orptname.SetParameterValue("CName", PubCName)
orptname.SummaryInfo.ReportTitle = "JVR REPORT" & "_" & Format(CDate(FromDate.Text), "ddMMyyyy") & "-" & Format(CDate(ToDate.Text), "ddMMyyyy")
CReports.CRViewer.ReportSource = orptname
CReports.Show() '----- CrystalreportViewer1
但是没有数据被检索。
在此之后,我将数据库名称更改为我创建(使用数据库设计)报告的 Test1,它成功显示了数据。
再次尝试将 db 更改为 Test2 显示没有结果(但 Crystal Report 打开时没有任何错误连接错误。)
更改 DSN 默认数据库成功显示记录。
目前,我正在使用的成功运行代码如下。
With orptname
.DataSourceConnections.Item(0).SetConnection("DSNNAME", Pubdbname, True)
.SetParameterValue("ctdate", Format(CDate(ToDate.Text), "MM/dd/yyyy"))
.SetParameterValue("CName", PubCName)
.SummaryInfo.ReportTitle = "TEST REPORT" & "_" & Format(CDate(FromDate.Text), "ddMMyyyy") & "-" & Format(CDate(ToDate.Text), "ddMMyyyy")
CReports.CRViewer.ReportSource = orptname
CReports.Show()
End With
那我现在该怎么办?
简而言之,我希望我的 Crystal Report 也可以在 LAN PC 中打开,并且我可以动态设置数据库。 (所有数据库都有完全相同的架构)
【问题讨论】:
-
任何其他获得结果的方式也相当可观。