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

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文件,请高手指教。
...全文
265 10 打赏 收藏 转发到动态 举报
写回复
用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

你试试看,我这样写的就是对的
Crystal Reports 9.2 中文版(水晶报表) 下载,,软件版本:9.2.0.448不过现已出了Crystal Reports Professional v9.2.2.634 (c) Crystal Decisions,有足够的空间就提供.这是一个很不错的报表控件,我相信很多朋友都听说过吧!Crystal Reports 用于处理数据库,帮助用户分析和解释重要信息。使用 Crystal Reports 可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。 创建所能想象的任何报表 Crystal Reports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流。 将报表扩展到 Web Crystal Reports 的灵活性并未停留在创建报表这一功能上 ?您可以用各种各样的格式发布报表,包括用 Microsoft 的 Word 和 Excel 发布、通过电子邮件甚至 Web 发布。高级的 Web 报表功能允许工作组中的其他成员在他们自己的 Web 浏览器中查看或更新共享报表。 将报表并入应用程序通过将 Crystal Reports 的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。Crystal Reports 支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。 不论您是 IT 行业的站点管理员,还是营销推广经理,也无论您是金融业的数据库管理员还是 CEO,Crystal Reports 都堪称是一个功能强大的工具,它可以帮助每一个人分析、解释重要信息。感谢 revenant 上传!

1,216

社区成员

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

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