Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 Crystal报告TestConnection失败_Visual Studio 2010_Crystal Reports - Fatal编程技术网

Visual studio 2010 Crystal报告TestConnection失败

Visual studio 2010 Crystal报告TestConnection失败,visual-studio-2010,crystal-reports,Visual Studio 2010,Crystal Reports,我有一个Crystal Reports应用程序,正在通过VS2010加载。我的机器上加载了CR运行时13.0.2。当我使用debug运行应用程序时,它工作正常。(事实上很好。)但是当我安装构建的应用程序时(即使是在同一台开发机器上)。TestConnection行返回false,这向我表明它没有正确连接到我的数据库 如果我没有将此代码放入其中,应用程序将在以下行提示输入登录凭据: Me.CrystalReportViewer1.ReportSource=reportDocument1 但是数据库

我有一个Crystal Reports应用程序,正在通过VS2010加载。我的机器上加载了CR运行时13.0.2。当我使用debug运行应用程序时,它工作正常。(事实上很好。)但是当我安装构建的应用程序时(即使是在同一台开发机器上)。TestConnection行返回false,这向我表明它没有正确连接到我的数据库

如果我没有将此代码放入其中,应用程序将在以下行提示输入登录凭据: Me.CrystalReportViewer1.ReportSource=reportDocument1

但是数据库名和服务器名不正确并且变灰了,我在UserName和PW中输入的任何内容都不起作用

我搜索过谷歌,尝试过很多“修复”,但都没有成功

我还使用DatabaseExpert“更新”了我的数据源,并从设计模式运行了一个“验证数据库”,但仍然发生了同样的事情

这是我的密码:

Private Function ConnectReport(sDatabaseFile As String, _serverName As String, ReportDocument1 As ReportDocument)
    ReportDocument1.SetDatabaseLogon("sa", "sqlAdmin2008", _serverName, sDatabaseFile, True)


    For x As Integer = 0 To ReportDocument1.DataSourceConnections.Count - 1
        ReportDocument1.DataSourceConnections(x).SetConnection(_serverName, sDatabaseFile, "sa", "sqlAdmin2008")
    Next

    For Each cTable As Table In ReportDocument1.Database.Tables
        If cTable.Name <> "Command" Then
            SetTableConnectionInfo(cTable, sDatabaseFile, _serverName)
        End If
    Next

    For Each obj As ReportObject In ReportDocument1.ReportDefinition.ReportObjects

        If obj.Kind = ReportObjectKind.SubreportObject Then
            Dim subReport As SubreportObject = CType(obj, SubreportObject)
            Dim subReportDocument As ReportDocument = ReportDocument1.OpenSubreport(subReport.SubreportName)
            ConnectReport(sDatabaseFile, _serverName, subReportDocument)
        End If
    Next

End Function

Private Function SetTableConnectionInfo(cTable As Table, sDatabaseFile As String, _serverName As String)
    Dim logonInfo As TableLogOnInfo = cTable.LogOnInfo
    Dim connInfo As ConnectionInfo = New ConnectionInfo()

    connInfo.DatabaseName = sDatabaseFile
    connInfo.ServerName = _serverName
    connInfo.UserID = "sa"
    connInfo.Password = "sqlAdmin2008"
    'connInfo.Type = ConnectionInfoType.SQL
    logonInfo.ConnectionInfo = connInfo

    cTable.ApplyLogOnInfo(logonInfo)

    If cTable.TestConnectivity = False Then
        Throw New ApplicationException("Cannot connect Crystal Reports to Database.")
    End If

    cTable.Location = sDatabaseFile & "." & "dbo" & "." & cTable.Location


End Function
Private Function ConnectReport(sDatabaseFile作为字符串,\u serverName作为字符串,ReportDocument1作为ReportDocument)
ReportDocument1.SetDatabaseLogon(“sa”,“sqlAdmin2008”,“服务器名”,sDatabaseFile,True)
对于x作为整数=0的ReportDocument1.DataSourceConnections.Count-1
ReportDocument1.DataSourceConnections(x).SetConnection(_serverName,sDatabaseFile,“sa”,“sqlAdmin2008”)
下一个
对于ReportDocument1.Database.Tables中的每个cTable As表
如果是cTable.Name“Command”,则
SetTableConnectionInfo(cTable、sDatabaseFile、\u服务器名)
如果结束
下一个
对于每个obj作为ReportDocument1.ReportDefinition.ReportObjects中的ReportObject
如果obj.Kind=ReportObjectKind.SubreportObject,则
作为SubreportObject的Dim子报表=CType(obj,SubreportObject)
Dim subReportDocument As ReportDocument=ReportDocument1.OpenSubreport(subReport.SubreportName)
ConnectReport(sDatabaseFile、\u服务器名、子报告文档)
如果结束
下一个
端函数
私有函数SetTableConnectionInfo(cTable作为表,sDatabaseFile作为字符串,_serverName作为字符串)
Dim logonInfo作为TableLogOnInfo=cTable.logonInfo
Dim connInfo As ConnectionInfo=新的ConnectionInfo()
connInfo.DatabaseName=sDatabaseFile
connInfo.ServerName=\u ServerName
connInfo.UserID=“sa”
connInfo.Password=“sqlAdmin2008”
'connInfo.Type=connectioninfo.SQL
logonInfo.ConnectionInfo=connInfo
cTable.ApplyLogOnInfo(logonInfo)
如果cTable.TestConnectivity=False,则
抛出新的ApplicationException(“无法将Crystal报表连接到数据库。”)
如果结束
cTable.Location=sDatabaseFile&“&”dbo&“&”cTable.Location
端函数

在我看来,您需要像这样将表作为引用传递进来

Private Function SetTableConnectionInfo(ref cTable As Table, sDatabaseFile As String, _serverName As String)