水晶报表crystal report的业内最专业、功能最强的报表系统他除了强大的报表功能外最大的优势是实现了和绝大多数流行研发工具的集成和接口。在vs net平台做过报表研发的程式员一定都对水晶报表强大、高效、集成等特性留下了深刻印象。除了研发新程式外在工作中我们常需要接触到非常多较早的软件系统报表功能升级的需求如果能结合水晶报表这一强大的工具往往能事半功倍。vb是以前流行的数据库研发平台用其研发的c/s系统在社会上有非常大的保有量但vb超弱的报表功能往往让程式员面对客户的升级需求一筹莫展。本文并不做水晶报表的使用和编程教学实际上水晶报表本身的使用方法和vs net平台并没有太大的差别我主要是和大家探讨一下vb和水晶报表的一种较方便的接口方式。我的研发测试平台是windows2003 standard简体中文版、 vb60+sp5英文版、 crystal 90简体中文研发版。
关于在水晶报表中制作报表模板的方法并非本文的探讨范围读者能参考crystal report的帮助文件和官方网站的技术资料。简单地说首先要通过水晶报表的数据库引擎手动连接相应的表结构制作报表模板并保存为rpt文件该项操作和利用vb自带的报表工具制作报表大同小异。
用vb调用水晶报表进行报表研发的简单接口方法就是在水晶报表中用"仅字段定义"来获得字段分布文件用虚拟的文件创建表字段用craxdrt对象来强制改动数据源ado recordset 其效果相当于在vb中调用了rpt文件。下面分步骤介绍编程方法。
第一步
在vb工程中project菜单加入"add crystal report 9"报表名使用默认即可。这时form2 crystal rerport自动添加的form假设名为form 2被自动分配了如下代码option expl icitdim report as new cystal1private sub form_load()screen mousepointer=vbhourglass调用水晶报表时置鼠标为沙漏状crviewer91 reportsource=report该语句的赋值将在后面被修改crviewer91 viewreportscreen mousepointer=vbdefault调用水晶报表完成后置鼠标为默认形状endsubprivate sub form_resize()crviewer91 top=0crviewer91 left=0crviewer91 height=scaleheightcrviewer91 width=scalewidthendsub
第二步
点击crystal report设计器的"数据库字段"选定"数据库专家 "然后点"创建新连接"再点"仅字段定义"创建"数据库定义"文件字段名和宽度和原数据库表保持一致。最后在数据库字段中获得了相应字段将其置于报表上按水晶报表的需求设置。
第三步
该步骤非常关键添加一个modual到工程文件中定义全局的adodb变量实现数据库和水晶报表的动态连接。代码如下publ ic conn as new adodb connectionpubl ic rs as new adodb recordset
第四步
关于vb程式的ado数据库连接注意事项请看下面的打印按钮例程。private sub command1_cl ick()
dim connstr as stringif conn state=adstateopen then conn closeconnstr="provider=microsoft jet oledb 40;data source="&app path&"prtest mdb;persist security info=false"prtest mdb是程式当前目录的测试access数据库conn connectionstring=connstrconn openconn cursorlocation=adusecl ientif rs state=adstateopen then rs closers open"test",conn,adopenkeyset,adlockreadonlyreport database setdatasource rs,3, 1此行取消form2 show 1数据库连接完成后调用form2水晶报表工程endsub
需要提请大家注意的是上面代码中的report database setdatasource rs,3, 1是初用水晶报表的程式员容易犯的错误使用该语句后将造成数据库和水晶报表的连接失败。怎么动态调用水晶报表呢请看第五步。
第五步
创建水晶报表和数据库数据源的连接需要修改上面form 2的代码。option expl icitdim report as new cystal1
上面一行取消private sub form_load()dim oapp as new craxdrt appl icationdim orpt as craxdrt reportdim reportname as string
上面三行是新增加的screen mousepointer=vbhourglassreportname="rptpr1 rpt" 定义要引用的rpt文件set orpt=oapp openreport(app path&reportname, 1)orpt database setdatasource rs连接水晶报表和数据源orpt readrecordscrviewer91 reportsource=orpt启用水晶报表的预览功能crviewer91 viewreportscreen mousepointer=vbdefault
endsubprivate sub form_resize()crviewer91 top=0crviewer91 left=0crviewer91 height=scaleheightcrviewer91 width=scalewidthendsubprivate sub form_unload(cancel as integer)set report=nothingset rs=nothi ngset conn=nothingunload form2endsub
上面介绍了在vb中使用水晶报表进行报表研发的一种方法该方法简单易用适合初学者上手。大家熟悉以后还能继续学习crystal report提供的api函数l ib库 crpe32 dl l进行水晶报表研发能获得更大的灵活性。 完
修罗云怎么样?修罗云是一家国内老牌商家,修罗云商家以销售NAT机器起家,国内的中转机相当不错,给的带宽都非常高,此前推荐的也都是国内NAT VPS机器。今天,云服务器网(www.yuntue.com)小编主要介绍一下修罗云的香港云服务器,适合建站,香港沙田cn2云服务器,2核2G,5M带宽仅70元/月起,同时香港香港大带宽NAT VPS低至50元/月起,性价比不错,可以尝试一下!点击进入:修罗云官...
说明一下:gcorelabs的俄罗斯远东机房“伯力”既有“Virtual servers”也有“CLOUD SERVICES”,前者是VPS,后者是云服务器,不是一回事;由于平日大家习惯把VPS和云服务器当做一回事儿,所以这里要特别说明一下。本次测评的是gcorelabs的cloud,也就是云服务器。 官方网站:https://gcorelabs.com 支持:数字加密货币、信用卡、PayPal...
易探云怎么样?易探云(yitanyun.com)是一家知名云计算品牌,2017年成立,从业4年之久,目前主要从事出售香港VPS、香港独立服务器、香港站群服务器等,在售VPS线路有三网CN2、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。目前,易探云推出免备案香港物理机服务器性价比很高,E3-1230 8 核*1/16G DDR3/SATA 1TB/香港BGP线路/20Mbps/不限流量,仅...