Visual studio 2010 Crystal报告TestConnection失败
我有一个Crystal Reports应用程序,正在通过VS2010加载。我的机器上加载了CR运行时13.0.2。当我使用debug运行应用程序时,它工作正常。(事实上很好。)但是当我安装构建的应用程序时(即使是在同一台开发机器上)。TestConnection行返回false,这向我表明它没有正确连接到我的数据库 如果我没有将此代码放入其中,应用程序将在以下行提示输入登录凭据: Me.CrystalReportViewer1.ReportSource=reportDocument1 但是数据库名和服务器名不正确并且变灰了,我在UserName和PW中输入的任何内容都不起作用 我搜索过谷歌,尝试过很多“修复”,但都没有成功 我还使用DatabaseExpert“更新”了我的数据源,并从设计模式运行了一个“验证数据库”,但仍然发生了同样的事情 这是我的密码: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 但是数据库
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)