Crystal Reports DB登录提示虽然建立了所有表/报表连接

时间:2018-04-11 04:45:44

标签: crystal-reports database-connection

更新使用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

它扫描每个表设置连接。还扫描子报告。不确定是什么原因导致水晶报告在已经专门设置时请求登录。如果提供了正确的凭据,它仍然无法连接。

我已尝试删除报表对象并插入最新版本。

1 个答案:

答案 0 :(得分:0)

这是问题和解决这个问题的方法(在我的情况下)。

Crystal Reports数据源可以包括ADO .NET,OLE DB,ODBC等...以及各种驱动程序。报告是使用不再应用的特定连接和驱动程序创建的。我使用了新的数据库连接。由于应用程序扫描每个报告并最终设置正确的连接参数,因此通常可以正常工作,并且它在过去一直有效。但问题是目标系统没有为我使用的连接提供商提供正确的驱动程序。更难以排除故障的原因是Crystal Reports中的连接部分不是非常直观,并且可以使用不同的提供程序创建重复的连接名称 - 同名的不同提供程序。

解决方案是打开报告,转到: 数据库专家>设置数据源位置

  

这是关键部分:   选择与正确提供商的连接。   就我而言,这是SQLOLEDB

您可以右键单击该连接,然后选择"属性"并检查提供商。 Set Datasource Location

另一种解决方法是安装正确的驱动程序和版本。在这种情况下,由于SQLOLEDB提供程序已安装并且已经运行,我决定保留所有报告,而不是使用该提供程序。

您可能需要检查安装的提供程序以进行验证,直接的方法是检查注册表,例如,可以找到SQL Native Client SQLNCLI10:

HLKM \ SOFTWARE \微软\ SQLNCLI10