以前VB6的时候用过这个函数,不过后来许久没用就忘了,后来改用VB.NET遇到个问题,就是更改了数据库服务器后报表就不能正常使用了,显示报表时候老弹登陆对话框。那时候也网上找过答案,不过看的迷迷糊糊;也请教过朋友,但他们用的都不是CrystalReports,问题始终没得到解决。因为公司的数据服务器一般情况下是不会改变的,所以就偷懒把问题搁下了。这两天帮以前的同事写个小软件,碰巧要用到CrystalReports,因为现在跟他不在同一个公司,所以数据库服务器的地址一定是不会相同的,这才重新拣起这个问题。后来终于从网上找到答案。只要打开报表前调用下LoadReport函数设置下报表的连接信息就OK了。这个问题曾经困扰了我了好长一段时间,所以做下笔记以便以后用的上。
Imports CrystalDecisions.Shared
Public Sub LoadReport(ByRef rpt As CrystalDecisions.CrystalReports.Engine.ReportClass)
Dim info As New TableLogOnInfo
For Each tab As CrystalDecisions.CrystalReports.Engine.Table In rpt.Database.Tables
info = tab.LogOnInfo
info.ConnectionInfo.ServerName = gDataSource '服务器地址
info.ConnectionInfo.UserID = gUserName '登陆名
info.ConnectionInfo.Password = gPassword '登陆密码
info.ConnectionInfo.DatabaseName = gCatalog '数据库名称
tab.ApplyLogOnInfo(info)
Next
End Sub