2014-12-03 24 views
1

我已经在我的PC上测试过我的程序,并且一切正常,但是当我尝试将Windows窗体应用程序部署到客户机时Crystal Reports窗口弹出要求密码,沮丧的事实具有此使用设置:VB.NET - 部署水晶报表应用程序

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() 

我也注意到,数据库的字段是在水晶空白汇报拉网这可以解释为什么我得到的错误:手动输入密码时,登录失败,但找不出为什么数据库名称没有被传递。

我试着改变我的窗体上的DATABASE名称(ON DEV PC),这是在dbbox.text中,这确实停止报告运行,所以它应该传递数据库作为连接字符串的一部分?

我已经在客户端机器上安装了Crystal Report Viewer,因为我可能是这样,但没有运气。 我是否需要安装.NET v4?

真的卡住了,并且会喜欢一点指导。

感谢 罗布

+0

如果它帮助这里是我的应用程序运行显示错误我已经描述的屏幕截图:[错误消息点击这里](http://hcs-it.com/ReportError.jpg) – Rob4236 2014-12-03 18:21:30

回答

0

我只是用:

crDocument.SetDatabaseLogon("name", "password", "server", "database") 

我避免这些问题,简单地使用,而不是所有的,上面的代码就搞定了。我遇到了同样的问题,这让我疯狂。

有人在这里可能知道为什么,但我上面发布的,为我工作。

+0

嗨基思,谢谢你的回应但没有解决问题..我改变了使用SetDatabaseLogon(),但它仍然在我的机器上工作,但现在唯一传递给Crystal Report的是服务器(本地)\ SQLEXPRESS,用户不再是他们的。抓我的头?我可以硬编码在RPT文件连接甚至? – Rob4236 2014-12-04 14:21:43