更新使用VS 2008和Crystal Reports开发的旧报表系统。更新后,一些报告开始提示数据库登录,而其他报告完美地工作(有更新)。报告已更改为包含新表和字段。所有表和报表文档连接都是通过常规例程建立的,类似于:SetDBLogon(myConnectionInfo,Me.CrystalReportViewer1.ReportSource)
Public Sub SetDBLogon(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
Dim myTables As Tables = myReportDocument.Database.Tables
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
myTableLogonInfo.ConnectionInfo = myConnectionInfo
Try
myTable.ApplyLogOnInfo(myTableLogonInfo)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Next End Sub
它扫描每个表设置连接。还扫描子报告。不确定是什么原因导致水晶报告在已经专门设置时请求登录。如果提供了正确的凭据,它仍然无法连接。
我已尝试删除报表对象并插入最新版本。
答案 0 :(得分:0)
这是问题和解决这个问题的方法(在我的情况下)。
Crystal Reports数据源可以包括ADO .NET,OLE DB,ODBC等...以及各种驱动程序。报告是使用不再应用的特定连接和驱动程序创建的。我使用了新的数据库连接。由于应用程序扫描每个报告并最终设置正确的连接参数,因此通常可以正常工作,并且它在过去一直有效。但问题是目标系统没有为我使用的连接提供商提供正确的驱动程序。更难以排除故障的原因是Crystal Reports中的连接部分不是非常直观,并且可以使用不同的提供程序创建重复的连接名称 - 同名的不同提供程序。
解决方案是打开报告,转到: 数据库专家>设置数据源位置
这是关键部分: 选择与正确提供商的连接。 就我而言,这是SQLOLEDB
您可以右键单击该连接,然后选择"属性"并检查提供商。
另一种解决方法是安装正确的驱动程序和版本。在这种情况下,由于SQLOLEDB提供程序已安装并且已经运行,我决定保留所有报告,而不是使用该提供程序。
您可能需要检查安装的提供程序以进行验证,直接的方法是检查注册表,例如,可以找到SQL Native Client SQLNCLI10:
HLKM \ SOFTWARE \微软\ SQLNCLI10