水晶报表论坛里现成的代码都不行,期盼高手指点

Formatforetime 2007-07-25 06:52:15
环境:
windows 2000 server+crystal report8.5+sql server2000企业版
首先设计了一个最简单的报表,只有一个字段,设计时首先通过数据库ole db连接到数据库,并选择任意一个表的任意一个字段,另存为report1.rpt文件
然后建立一个vb工程并在窗体上放一个按钮然后引用预览控件,在按钮click事件中输入以下代码:

Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report

conn.Open "provider=sqloledb.1;uid=sa;pwd=123;database=zyddb;server=."
rs.Open "select * from b_bjcgrk", conn, 3
Set carp = capp.OpenReport("D:\Work\Company\test\report1.rpt")
carp.Database.Tables(1).SetLogOnInfo ".", "zyddb", "sa", "123"
carp.DiscardSavedData
carp.Database.SetDataSource rs

CRViewer1.ReportSource = carp
CRViewer1.Refresh
CRViewer1.ViewReport
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
Set capp = Nothing
Set carp = Nothing

问题出现:
1.在CRViewer1.Rdfresh出现错误:对象 'Refresh' 的方
法 'ICrystalReportViewer4' 失败
2.去掉数据库连接和记录集打开代码报表照样显示且显示的内容相同,代码如下:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report

Set carp = capp.OpenReport("D:\Work\Company\test\report1.rpt")

CRViewer1.ReportSource = carp
CRViewer1.ViewReport
Set rs = Nothing
Set conn = Nothing
3.很多贴子代码中都没有我所写的carp.Database.Tables(1).SetLogOnInfo ".", "zyddb", "sa", "123"这个难道能正常运行?我的代码如果去掉这个报表显示出来后报错:server has not yet been opened

另外以前我一直是在程序内设计报表的,就是那种dsr文件,操作起来很简单,但是会被编译到exe中,所以希望改为调用rpt文件,请高手指教。
...全文
268 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Formatforetime 2007-07-28
  • 打赏
  • 举报
回复
哎,最后还是自己解决了,原来是报表的版本问题,可惜所有我搜索到关于vb使用水晶报表的资料或者代码都在说怎么写代码而没有一个提到报表版本问题的。这个论坛越来越找不到答案了。
daisy8675 2007-07-27
  • 打赏
  • 举报
回复
你在设计报表的时候用了ole db连接。
实际上水晶报表还有一层登陆数据库的认证机制
所以建议你改一下报表设计
把连接方式改成ttx(自定义文件)就不会出现这样的问题了。
Formatforetime 2007-07-27
  • 打赏
  • 举报
回复
再顶
Formatforetime 2007-07-26
  • 打赏
  • 举报
回复
这里人气很差呀,自己不停的顶,把他顶成最红的贴
Formatforetime 2007-07-25
  • 打赏
  • 举报
回复
都不愿意帮忙呀?
xiaolei1982 2007-07-25
  • 打赏
  • 举报
回复
帮楼主顶下~~~
Formatforetime 2007-07-25
  • 打赏
  • 举报
回复
无人能解答么?
Formatforetime 2007-07-25
  • 打赏
  • 举报
回复
请问大家现在用的水晶报表都是什么版本的,这个跟版本会不会有关系?
Formatforetime 2007-07-25
  • 打赏
  • 举报
回复
clear_zero(clear_zero)
兄弟,结果相同,在refresh处报错,去掉这行语句报表预览出来的内容还是不会根据sql server条件范围改变。
clear_zero 2007-07-25
  • 打赏
  • 举报
回复
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report
dim crtable as databasetable

conn.Open "provider=sqloledb.1;uid=sa;pwd=123;database=zyddb;server=."
rs.Open "select * from b_bjcgrk", conn, 3
Set carp = capp.OpenReport("D:\Work\Company\test\report1.rpt")
carp.DiscardSavedData
for each crtable in carp.database.tables
crtable .SetLogOnInfo ".", "zyddb", "sa", "123"

crtable .SetDataSource rs,3
next crtable

CRViewer1.ReportSource = carp
CRViewer1.Refresh
CRViewer1.ViewReport
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
Set capp = Nothing
Set carp = Nothing

你试试看,我这样写的就是对的

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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