繁体   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