vb.net如何调用水晶报表?

lingloveman 2010-05-25 08:35:36
各位大侠,本人是新手,现在用vb.net要做水晶报表的打印。环境是VS2005。
实在是不知道该如何入手。有没有哪位指点一下该怎么做呢?
...全文
413 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿双2009 2010-05-26
  • 打赏
  • 举报
回复
版本不一样?
lingloveman 2010-05-26
  • 打赏
  • 举报
回复
错误是:
未能加载文件或者程序集“CrystalDecisions.Windows.Forms,Version=10.2.3600.0,Culture = neutral,PublicKeyToken=692fbea5512e1304”或者它的某一个依赖项。系统找不到指定的文件。

出错的那台电脑上已经有安装水晶报表这个软件的。这是怎么回事??
lingloveman 2010-05-25
  • 打赏
  • 举报
回复
我在自己电脑上做的vb.net + 水晶报表可以运行,然后我把可执行文件拷贝到别的电脑上就不行了。这应该怎么办呢???
lingloveman 2010-05-25
  • 打赏
  • 举报
回复
如果用参数传递好像每次都要跳出登陆框让填数据库密码的,
然后为什么可执行文件拷贝到别的电脑上就不行了,应该如何部暑呢???我一直没部暑成功过
阿双2009 2010-05-25
  • 打赏
  • 举报
回复
lingloveman 2010-05-25
  • 打赏
  • 举报
回复
终于搞定了一个最简单的报表了,是在程序里面指定数据,但是如果我想传参数过去的话应该是怎么做的呢??然后可执行文件拷贝到别的电脑上就不行了,应该如何部暑呢???我一直没部暑成功过。
tashiwoweiyi 2010-05-25
  • 打赏
  • 举报
回复
学习,帮顶。
lingloveman 2010-05-25
  • 打赏
  • 举报
回复
看过阿泰的那个视频了,是C#做asp.net的,看了不是很明白,
我现在就只是想在vb.net的窗体中,通过按一个按钮,传参数来调用水晶报表,这个应该怎么做呢?
阿双2009 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lingloveman 的回复:]
VS2005自带就有crystal report了吧??能不能用VS2005给个详细的步骤?不好意思我是新手,什么也不懂。
[/Quote]

参考
http://topic.csdn.net/u/20090626/18/0e7d0af0-2555-479d-9cb5-84175787f2cd.html?75780
lingloveman 2010-05-25
  • 打赏
  • 举报
回复
VS2005自带就有crystal report了吧??能不能用VS2005给个详细的步骤?不好意思我是新手,什么也不懂。
阿泰 2010-05-25
  • 打赏
  • 举报
回复
1楼提供的方法是VB6+CR9的,这种在VB.Net中已经不适用。
楼主有时间可以参考一下,但是个人建议不要看
因为VB6时的方法跟VB.Net的方法差别还是比较大的


对于初学者,建议看一下下面这个视频
http://www.feelcode.net/post/23.htm
虽然是c#的,不过看一下,了解下整个报表制作,编码流程。可以有利于入门。

皇城龙三 2010-05-25
  • 打赏
  • 举报
回复
vb.net发布水晶报表程序步骤

http://www.jb51.net/article/13266.htm

皇城龙三 2010-05-25
  • 打赏
  • 举报
回复
在VB中使用水晶报表的一种简易编程方法-.NET教程,VB.Net语言

水晶报表(crystal report)的业内最专业、功能最强的报表系统,他除了强大的报表功能外,最大的优势是实现了和绝大多数流行研发工具的集成和接口。在vs.net平台做过报表研发的程式员,一定都对水晶报表强大、高效、集成等特性留下了深刻印象。除了研发新程式外,在工作中我们常需要接触到非常多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。

vb是以前流行的数据库研发平台,用其研发的c/s系统在社会上有非常大的保有量,但vb超弱的报表功能往往让程式员面对客户的升级需求一筹莫展。本文并不做水晶报表的使用和编程教学,实际上水晶报表本身的使用方法和vs.net平台并没有太大的差别,我主要是和大家探讨一下vb和水晶报表的一种较方便的接口方式。我的研发测试平台是windows2003 standard简体中文版、vb6.0+sp5英文版、crystal 9.0简体中文研发版。

关于在水晶报表中制作报表模板的方法,并非本文的探讨范围,读者能参考crystal report的帮助文件和官方网站的技术资料。简单地说,首先要通过水晶报表的数据库引擎手动连接相应的表结构,制作报表模板,并保存为rpt文件,该项操作和利用vb自带的报表工具制作报表大同小异。

用vb调用水晶报表进行报表研发的简单接口方法就是,在水晶报表中用"仅字段定义"来获得字段分布文件,用虚拟的文件创建表字段,用craxdrt对象来强制改动数据源(ado.recordset),其效果相当于在vb中调用了rpt文件。下面分步骤介绍编程方法。




第一步:
在vb工程中project菜单加入"add crystal report 9",报表名使用默认即可。这时form2(crystal rerport自动添加的form,假设名为form2)被自动分配了如下代码:

option explicit
dim report as new cystal1

private sub form_load()

screen.mousepointer = vbhourglass 调用水晶报表时置鼠标为沙漏状

crviewer91.reportsource = report 该语句的赋值将在后面被修改

crviewer91.viewreport
screen.mousepointer = vbdefault 调用水晶报表完成后置鼠标为默认形状

end sub

private sub form_resize()

crviewer91.top = 0
crviewer91.left = 0
crviewer91.height = scaleheight
crviewer91.width = scalewidth

end sub

第二步:
点击crystal report设计器的"数据库字段",选定"数据库专家...",然后点"创建新连接",再点"仅字段定义",创建"数据库定义"文件,字段名和宽度和原数据库表保持一致。最后,在数据库字段中获得了相应字段,将其置于报表上,按水晶报表的需求设置。

第三步:
该步骤非常关键,添加一个modual到工程文件中,定义全局的adodb变量,实现数据库和水晶报表的动态连接。代码如下:

public conn as new adodb.connection
public rs as new adodb.recordset

第四步:
关于vb程式的ado数据库连接注意事项,请看下面的打印按钮例程。

private sub command1_click()

dim connstr as string

if conn.state = adstateopen then conn.close

connstr = "provider=microsoft.jet.oledb.4.0;data source=" & app.path & "\prtest.mdb;persist security info=false" prtest.mdb是程式当前目录的测试access数据库

conn.connectionstring = connstr

conn.open

conn.cursorlocation = aduseclient

if rs.state = adstateopen then rs.close

rs.open "test", conn, adopenkeyset, adlockreadonly

report.database.setdatasource rs, 3, 1 此行取消


form2.show 1 数据库连接完成后,调用form2水晶报表工程


end sub

需要提请大家注意的是,上面代码中的report.database.setdatasource rs, 3, 1是初用水晶报表的程式员容易犯的错误,使用该语句后将造成数据库和水晶报表的连接失败。怎么动态调用水晶报表呢?请看第五步。

第五步:
创建水晶报表和数据库数据源的连接,需要修改上面form2的代码。

option explicit
dim report as new cystal1
上面一行取消

private sub form_load()

dim oapp as new craxdrt.application
dim orpt as craxdrt.report
dim reportname as string
上面三行是新增加的

screen.mousepointer = vbhourglass


reportname = "\rpt\pr1.rpt"   定义要引用的rpt文件

set orpt = oapp.openreport(app.path & reportname, 1)

orpt.database.setdatasource rs 连接水晶报表和数据源
orpt.readrecords

crviewer91.reportsource = orpt 启用水晶报表的预览功能

crviewer91.viewreport
screen.mousepointer = vbdefault


end sub

private sub form_resize()

crviewer91.top = 0
crviewer91.left = 0
crviewer91.height = scaleheight
crviewer91.width = scalewidth

end sub

private sub form_unload(cancel as integer)

set report = nothing

set rs = nothing

set conn = nothing

unload form2

end sub

上面介绍了在vb中使用水晶报表进行报表研发的一种方法,该方法简单易用,适合初学者上手。大家熟悉以后,还能继续学习crystal report提供的api函数(lib库 crpe32.dll)进行水晶报表研发,能获得更大的灵活性
lingloveman 2010-05-25
  • 打赏
  • 举报
回复
我装了水晶报表了,还是不行
东莞寻香苑 2010-05-25
  • 打赏
  • 举报
回复
别的电脑,是不是没有装水晶报表?
lingloveman 2010-05-25
  • 打赏
  • 举报
回复
在别的电脑上运行提示错误:

有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.IO.FileNotFoundException: 未能加载文件或程序集“CrystalDecisions.Windows.Forms, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304”或它的某一个依赖项。系统找不到指定的文件。
文件名:“CrystalDecisions.Windows.Forms, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304”
在 mainpro.sysmodi.InitializeComponent()
在 mainpro.sysmodi..ctor()
在 mainpro.mainpro.MchangePSW_Click(Object sender, EventArgs e)
在 System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
在 System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
在 System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
在 System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
在 System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
在 System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
在 System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
在 System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
在 System.Windows.Forms.ToolStrip.WndProc(Message& m)
在 System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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