VB.net下如何用通过程序动态的设定.rpt文件的数据源

Fortune2k1 2003-07-10 10:49:16
Dim myReport as new employee_listing()
myReport.load
dim myDatabase=myReport.Database
dim myConnectionInfo as new CrystalDecisions.Shared.ConnectionInfo()
dim myTableLogonInfo as new CrystalDecisions.shared.TableLogOnInfo()
Dim myTables=myDatabase.tables
Dim myTable as CrystalDecisions.CrystalReportS.Engine.Table

For each myTable In myTables

If myTable.Location.tostring()="Employee" Then
myTable.Location="Employee_Current"
end if
myTable.ApplyLogOnInfo(myTableLogonInfo)
next

以上是动态的改换.rpt文件的数据源表名,用什么方法可以动态的改变数据库名呢?望达人速告之.

...全文
224 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fortune2k1 2003-07-11
  • 打赏
  • 举报
回复
问题已经解决了,
RhettConnectionInfo.ServerName = "server"
里面只要把"server"名指定成一个DSN预建好的Service名即可.

Fortune2k1 2003-07-11
  • 打赏
  • 举报
回复
自Up
Help!Help!Help!Help!
Fortune2k1 2003-07-10
  • 打赏
  • 举报
回复
但现在的情况是这样,.rpt文件是事先建好的,不能改变,.rpt里面连接的数据库现在不存在,希望通过编码的方式,把.rpt文件的数据连接到新数据库的相同的表名下.这个新数据库中的表和.rpt文件中用到的表的结构完全相同,有什么办法吗?我使用了SETDATASOURCE后,在调用ReportDocument的Export方法的时候,它仍然要登陆到当初设计.rpt文件时的连接的那个数据库,而这个数据库是不存在的现在,有什么办法吗?
谢.
xhan2000 2003-07-10
  • 打赏
  • 举报
回复
myReport.load("c:\\a.rpt")
abiho 2003-07-10
  • 打赏
  • 举报
回复
你可以参照以前的贴子
http://expert.csdn.net/Expert/topic/1961/1961628.xml?temp=.1254694
或者看看李洪根的
http://www.csdn.net/develop/read_article.asp?id=16992

关键是要在设计的时候加入dataset,然后绑定到报表!
别怕麻烦,一步一步的作,肯定能学到很多!
RuiChen 2003-07-10
  • 打赏
  • 举报
回复
你可以对过REPORTDOCUMENT的SETDATASOURCE来定义你的动态数据集。
Fortune2k1 2003-07-10
  • 打赏
  • 举报
回复
TO:dayangsoft(dy)

用这种方法:
rpt.SetDataSource(ds.Tables("bb"))
rpt2.SetDataSource(ds.Tables("cc"))
是不是一定要求在当初设计.rpt文件时就要把数据源设计成Dataset()啊.
dayangsoft 2003-07-10
  • 打赏
  • 举报
回复
cn.Open()
Dim ds As New DataSet() 'Dataset3()
Dim da As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(sel, cn)
Dim da2 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(sel2, cn)
da.Fill(ds, "bb")
da2.Fill(ds, "cc")

rpt.SetDataSource(ds.Tables("bb"))
rpt2.SetDataSource(ds.Tables("cc"))
crv.ReportSource = rpt

crv.Show()
Fortune2k1 2003-07-10
  • 打赏
  • 举报
回复
To:abiho(橡木)
不行啊,要添加什么引用吗?rpt根本没有setdatabaselogon(,,,)这个方法.
Czh_cz 2003-07-10
  • 打赏
  • 举报
回复
关注
abiho 2003-07-10
  • 打赏
  • 举报
回复
Dim rtp As New CrystalDecisions.CrystalReports.Engine.ReportDocument
rpt1.load("ffffffff.rpt")
...........
rtp.SetDatabaseLogon(user, password, server, database)
Fortune2k1 2003-07-10
  • 打赏
  • 举报
回复
To:powerbeing
我要通过程序同时倒出很多张.rpt,所以无法事先创建.rpt相对应的类,我的实现方法是从配置文件中读取.rpt的路径,然后定义ReportDocument,使用Load方法实现的.
Fortune2k1 2003-07-10
  • 打赏
  • 举报
回复
但是没有rpt1.SetDatabaseLogon()
这个方法啊.
powerbeing 2003-07-10
  • 打赏
  • 举报
回复
用.RPT文件创建一个报表类,这样好象可以修改,我先试试。
abiho 2003-07-10
  • 打赏
  • 举报
回复
估计很难,你可以试试
rpt1.SetDatabaseLogon()
Fortune2k1 2003-07-10
  • 打赏
  • 举报
回复
很急,望达人回答.谢谢先.

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧