2014-12-03 40 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