簡體   English   中英

為什么在Crystal Reports方法ExportToDisk中無法打開連接

[英]Why am I getting failed to open connection in Crystal Reports method ExportToDisk

我有一個用戶說正在運行的報告。 該應用程序對我來說是新的,而Crystal Reports對我來說是新的。 已備份數據庫並將其還原到新的SqlServer。 孤立的用戶被重新鏈接,報告代碼(如下所示)更改為指向新服務器。 現在,它無法連接錯誤。 該報告是從C#代碼運行的。 這是調用報告的代碼,其后是引發異常的點的值。

        private void laborRptByJobBtn_Click(object sender, EventArgs e)
    {
        if (rptFolderDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                CrystalDecisions.CrystalReports.Engine.ReportDocument rptObj = new LaborRptByJob();
                CrystalDecisions.Shared.TableLogOnInfo tliEZIS = new TableLogOnInfo();


                tliEZIS.TableName = rptObj.Database.Tables[0].Name;
                tliEZIS.ConnectionInfo.ServerName = ConfigurationManager.AppSettings["DatabaseServerName"];
                tliEZIS.ConnectionInfo.DatabaseName = "EZIS";
                tliEZIS.ConnectionInfo.UserID = "EZIS";
                tliEZIS.ConnectionInfo.Password = "EZIS";
                rptObj.Database.Tables[0].ApplyLogOnInfo(tliEZIS);
                rptObj.SetParameterValue("JobNumber", division.Text.Trim());
                string testPath = rptFolderDialog.SelectedPath + "\\Job " + division.Text.Trim() + " - Labor Report.pdf";
                rptObj.ExportToDisk(ExportFormatType.PortableDocFormat, testPath);
                //rptObj.ExportToDisk(ExportFormatType.PortableDocFormat, rptFolderDialog.SelectedPath + "\\Job#: " + division.Text.Trim() + " - Labor Report.pdf");
            }
            catch (NotSupportedException ex)
            {
                MessageBox.Show(ex.Message, ex.Source);
            }
        }
    }

}

出現異常時,我在監視列表中收到此看似有趣的錯誤消息:

        'rptObj.Database.Tables[0].Location' threw an exception of type 'System.InvalidCastException'   error CS1012: Too many characters in character literal  

我知道這意味着使用單引號設置字符串,但是我查看了代碼,但沒有找到直接設置所有或任何單引號的location參數的方法。 同時,我將手表放在位置上並得到了

        rptObj.Database.Tables[0].Location  "LaborReportView"   string

其他值為:

ServerName = "\\\\appdev02\\mssql2017dev"
DatabaseName = "EZIS"
UserId = "EZIS"
Testpath = "\\\\Mac\\Home\\Desktop\\Job 2849 - Labor Report.pdf"

在監視列表中,有幾行invalidcastexceptions,例如在Location上的一行和在Name上的一行。 我已使用SSMS驗證到\\ appdev02 \\ mssql2017dev EZIS數據庫的EZIS登錄是否具有相同的密碼並且具有對該視圖的權限。

好吧,我在幫助下找到了答案。 錯誤消息無法連接,所以我花了一些時間看為什么會這樣。 真正的問題是數據源是一個視圖,並且該視圖已損壞。 在舊數據庫中,該視圖使用openquery()鏈接到單獨的服務器。 在新服務器中,兩個數據庫位於同一服務器上,因此“鏈接”不可用。 只需對完全限定的名稱進行更改即可使用。

盡管我很尷尬,但我並沒有在診斷問題的過程中盡早地運行該視圖,但我仍在發布此信息。

首要學習(再學習)從不相信錯誤消息來確切說明問題所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM