65.9K
CodeProject 正在变化。 阅读更多。
Home

在VS2005中运行时更改Crystal Report数据库登录信息

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.40/5 (2投票s)

2008年3月25日

CPOL
viewsIcon

43157

downloadIcon

505

迁移VS2003代码到VS2005后解决Crystal Report“表未找到”错误消息。

引言

本文解决了在 VS2005 中将旧代码(在 VS2003 中开发)迁移后,导出 Crystal Report 到 PDF/DOC 格式时出现“找不到表”错误消息的问题。

背景

以前在 VS2003 中,table.Location 会报告“DATABASE.dbo.NAME”,并且可以使用此信息更改 Location,但在 vs2005 中 table.Location 仅报告 NAME。

使用代码

部署附件文件,然后将 ReportDocument 作为参数传递给 CReportAuthentication.Impersonate(ReportDocument 对象),从您想要启动报告的位置调用。

			Imports System.Configuration
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.ReportSource
Imports CrystalDecisions.Shared
Public Class CReportAuthentication
    Public Shared Sub Impersonate(ByVal myRpt As ReportDocument)
        ' Set the login info dynamically for the report
        Dim username As String = ConfigurationManager.AppSettings("ReportUser")
        Dim password As String = ConfigurationManager.AppSettings("ReportPassword")
        Dim Server As String = ConfigurationManager.AppSettings("Server")
        Dim Database As String = ConfigurationManager.AppSettings("Database")
        Dim logonInfo As New TableLogOnInfo

        Dim table As Table

        For Each table In myRpt.Database.Tables
            logonInfo = table.LogOnInfo
            logonInfo.ConnectionInfo.ServerName = Server
            logonInfo.ConnectionInfo.DatabaseName = Database
            logonInfo.ConnectionInfo.UserID = username
            logonInfo.ConnectionInfo.Password = password
            table.ApplyLogOnInfo(logonInfo)
            'Previously in VS2003, table.Location would report "DATABASE.dbo.NAME"  - 
            'and it was possible to use this to change the Location, but in vs2005 table.
            'Location only reports back the NAME.  See below for a fix.
            'http://vstoolsforum.com/blogs/crystal_reports/archive/2007/06.aspx
            table.Location = Database & ".dbo." & table.Name
        Next table
    End Sub
End Class
© . All rights reserved.