我已经在我的电脑上测试了我的程序,一切正常,但是当我尝试将Windows窗体应用程序部署到客户端计算机时,弹出了要求输入PASSWORD的Crystal Reports窗口,因此使用以下方式设置了这个事实:
Dim cryRpt As New ReportDocument
Dim crtableLogoninfos As New TableLogOnInfos
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
Dim CrTables As Tables
Dim CrTable As Table
cryRpt.Load("C:\ActivityReport.rpt")
cryRpt.SetParameterValue("FromDate", TextBox1.Text)
cryRpt.SetParameterValue("ToDate", TextBox2.Text)
With crConnectionInfo
.ServerName = serverbox.Text
.DatabaseName = dbbox.Text
.UserID = userbox.Text
.Password = passwordbox.Text
End With
CrTables = cryRpt.Database.Tables
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next
CrystalReportViewer1.ReportSource = cryRpt
CrystalReportViewer1.Refresh()
我还注意到Crystal Reports Pop Up中的DATABASE字段为空,这可以解释为什么我在手动输入密码时会收到错误:LOGIN FAILED,但无法弄清楚数据库名称未被传递的原因。 / p>
我已经尝试更改我的表单(ON DEV PC)上的DATABASE名称,该名称位于dbbox.text中,这会阻止报表运行,因此它应该将DATABASE作为连接字符串的一部分传递?
我已在客户端计算机上安装了Crystal Report Viewer,因为我可能会这样,但没有运气。 我是否需要安装.NET v4?
现在真的被困住,并且会喜欢一些指导。
由于 罗布
答案 0 :(得分:0)
我只是使用:
crDocument.SetDatabaseLogon("name", "password", "server", "database")
我已经避免使用这些问题,而不是使用上述所有代码。我遇到了同样的问题,这让我发疯了。
这里有人可能知道原因,但我上面发布的内容对我有用。