ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:93.42KB ,
资源ID:8869844      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8869844.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VB数据报表data report.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VB数据报表data report.docx

1、VB数据报表data reportvb6中用data report做报表我不是vb熟练工,最近刚刚用vb做完一个程序,其中控制部分没费太大周折,倒是报表部分颇让我费了一翻脑筋。在网上找了半天,也没找到关于vb6的 datareport的详细介绍,于是想借鉴前辈们的经验,用crystalreport或excel,感觉也不省劲,于是决定回头再去啃datareport,别说,还真让有所收获,下面就简单的介绍一下我的体会,希望对大家能有所帮助。首先介绍一下data report对象的几个常用属性。一是datasource,用于设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库;二是datame

2、mber,从datasource提供的几个数据成员中设置一个特定的数据成员;三是leftmargin、rightmargin、topmargin、bottommargin等,用于指定报表的左右上下的页边距;四是sections,即datareport的报表标头、页标头、细节、页脚注、报表脚注5个区域,如果加上分组(可以有多层分组),则增加一对区域,即分组标头、分组脚注。其中datasource一般是一个数据环境或是adodb.connection类型的变量,而datamember则对应数据环境中的command或是adodb.recordset类型的变量,推荐使用数据环境及command,页边

3、界大家肯定都很清楚,下面我主要介绍以下sections,这也是datareport的精髓所在。sections是一个集合,您可以为每一个section指定名称,也可以用其缺省的索引,从上到下依次为1、2。每个section均有height和visible属性,您可以在一定条件下使一个section不可见。在section中可以放置各种报表控件,其中rptlabel、rptimage、rptshape和rptline可以放在任意的section中,用于输出各种文字、图形及表格线;rpttextbox只能放在细节中,一般用于绑定输出datamemeber提供的数据字段;rptfunction只能被

4、放置在分组注脚中,用于输出使用各种内置函数计算出的合计、最大值、最小值、平均值、记数等等。上述报表控件中常用公共属性有用于控制位置及高度宽度的top、left、height、width和控制可见性的visible;其中rpttextbox还有datafield、datamember、dataformat及font属性;其他属性不再多说。然后介绍一下我的使用经验。一是对想控制的报表控件按类型有规律的命名;二是用rptshape的矩形框做表格线框,比用rptline画框省事多了,只有斜线才使用rptline;三是报表标题及报表中的表头文字、日期及页码用rptlabel,其中caption属性支持转

5、义字符,%d为长格式日期,%d为短格式日期,%p为总页数,%p为当前页码;四是对固定报表在设计窗口直接将报表控件摆放到位,对于活报表,应首先考虑报表最大的情形,将足够的控件分别放置在不同区域,位置大小可以不必深究,然后在报表输出前用vba代码对所有控件的属性进行调整,包括位置、高度、宽度、字体、对齐方式、显示格式、可见性等等,相应的对section也应根据情况调整其高度和可见性。最后用一个实例模板来说明其使用方法。连接数据库with 数据环境.rscommand名if .state = adstateopen then .close.source = sql语句 .open 打开想输出的数据库

6、数据项以便输出end withwith 报表名.datasource=数据环境.datamember=command名 这两行也可固定设好而不必每次设置设置页表头部分(rpttlabel为报表控件名).sections(2).controls(rptlabelpage).caption = 共%p页第%p页.sections(2).controls(rptlabeldate).caption = 打印日期:%d.sections(3).controls(rptlabel1).left=设置细节部分(rptshapex、rpttextboxx为报表控件名).sections(3).control

7、s(rptshape1).left=.sections(3).controls(rptshape1).top=.sections(3).controls(rptshape1).height=.sections(3).controls(rptshape1).width=.sections(3).controls(rpttextbox1).datamember=command名.sections(3).controls(rpttextbox1).datafield=字段1.sections(3).controls(rpttextbox1).font.name=.sections(3).contro

8、ls(rptshapen).visible=false.sections(3).controls(rpttextboxn).visible=false. sections(3).height=计算出的或固定的细节高度动态调整报表标题(rptlabeltitle为报表标签控件名).sections(2). controls(rptlabeltitle).left=.sections(2). controls(rptlabeltitle).alignment=调整完毕后.show 或 .printreportend with这样做的优点是报表设计时简单,调整方便、随意,只需更改一点代码,而不必为了

9、一点点的修改而费神的在设计窗口调整半天。急- 原因找到了,灵感来自“vbman2003”的赋值! 处理办法:原来报表窗体中的DataSource选中的是“DE”,现在去掉,改用赋值的方法:SetmyRpt.DataSource=DE。测试结果:内存再也没递增了,而且查询出报表速度奇快!- 好象看过MSDN,一般情况下rpt关闭后会自动释放报表对象。 我想你的情况可能是二个,一是用了DE,不过这个只是推测,因为没有用过这个,或者是用法上有问题。二是你是在窗体相关事件中设置和绑定报表数据源的,个人认为更恰当的用法应该是放在DataReport_Initialize事件中。个人看法,不一定正确,只供

10、参考。- 好建议!估计出报表的速度会大大提高。 我把代码交给搭档研究,还望多多指教!- 你这个CRAXDDRT.Application释放了么 还有这个CRAXDDRT.Report - 不要用DE,改用ADO吧,测试了一下,用ADO返回10000多条数据,反复打开,内存始终在404-407M之间(同时运行其它程序)。示例代码如下: 窗体上: PrivateSubcmdRptGroup_Click() DimrptAsNewRptGroup 显示分组报表 rpt.Show EndSub 报表代码: OptionExplicit DimcnAsADODB.Connection DimrsAsAD

11、ODB.Recordset PrivateSubDataReport_Initialize() DimSqlAsString,strSqlAsString 连接数据库(Access) Setcn=NewADODB.Connection Withcn .Provider=MSDataShape.1 一定要这句 .OpenDataProvider=Microsoft.Jet.OLEDB.4.0;&_ DataSource=&App.Path&db1.mdb;&_ PersistSecurityInfo=False EndWith 设置RptTextBox控件属性 分组标头,注意不要设置其DataM

12、ember属性 Me.Sections(Section6).Controls(text1).DataField=gp 细节标头,其中“miCmd”是分组名称 Me.Sections(Section1).Controls(text2).DataField=iName Me.Sections(Section1).Controls(text2).DataMember=miCmd Me.Sections(Section1).Controls(text3).DataField=iCode Me.Sections(Section1).Controls(text3).DataMember=miCmd Me.

13、Sections(Section1).Controls(text4).DataField=gp RptGroup.Sections(Section7).Controls(text5).DataMember=miCmd Me.Sections(Section7).Controls(text5).DataField=iCode 分组合计 查询表: Sql=SELECT*FROMtb 打开查询记录集 strSql=SHAPE&Sql&_ ASmiCmdCOMPUTEsum(miCmd.iCode)asiCode,miCmdBY gp Setrs=NewADODB.Recordset rs.Opens

14、trSql,cn,adOpenStatic,adLockReadOnly SetMe.DataSource=rs EndSub PrivateSubDataReport_QueryClose(CancelAsInteger,CloseModeAsInteger) Ifrs.State=adStateOpenThenrs.Close Ifcn.State=adStateOpenThencn.Close Setrs=Nothing Setcn=Nothing EndSub - . myRpt.Caption=strDRPName myRpt.Show1 SetmyRpt=Nothing Priva

15、teSubDataReport_QueryClose(CancelAsInteger,CloseModeAsInteger) SetdrpGas_Money=Nothing DE.CT.Close SetDE=Nothing EndSub 代码修改后测试结果: 第一次运行预览报表内存PF使用率924MB 第二次973MB 第三次0.99GB 关闭程序(VB工程还开着)PF使用率降到826MB 毫无进展啊!国庆期间的疑难问题啊! - dimrptasnewdrpGas_Money . rpt.show1 setrpt=nothing- 报表的数据环境=nothing 报表窗口drpGas_Mon

16、ey也关闭了 内存还是释放不掉。每运行一次增加约50M内存消耗,end后才释放。- dimrptasnewdrpGas_Money . rpt.show setrpt=nothing 在drpGas_Money的Form_Terminate里面把你定义的所有object都=nothing 诸如此类 CRAXDDRT.Application CRAXDDRT.report ADODB.Connection - 内存还是没有释放!- 1、生成EXE问题依旧。(是用户先发现内存溢出的) 2、 dimrptasnewdrpGas_Money . rpt.show PrivateSubDataRepor

17、t_QueryClose(CancelAsInteger,CloseModeAsInteger) SetdrpGas_Money=Nothing SetDE=Nothing EndSub - 这样试试: 先 dimrptasnewdrpGas_Money rpt.show 再在datareport_initialize()事件中绑定数据 最后在DataReport_QueryClose中释放报表对象 - 试一下NEW: dimrptasnewdrpGas_Money rpt.show 关闭报表时释放对象 PrivateSubDataReport_QueryClose(CancelAsInteg

18、er,CloseModeAsInteger) SetdrpGas_Money=Nothing Endsub 手边没有VB,测试不了。- 你生成EXE后看看有没这样的情况.- SetDE=Nothing DE.CT.ConnectionString=strCnn DE.Commands(gas_money).CommandText=SELECT*FROMChargeArreWHERE. strDRPName=普通用户管道燃气抄度报表&Rep_pay drpGas_Money.Sections(2).Controls(LTD_Name).Caption=Bran_ch drpGas_Money.S

19、ections(2).Controls(Report_Name).Caption=strDRPName drpGas_Money.Caption=strDRPName drpGas_Money.Show 监测结果: 从“drpGas_Money.Sections(2).Controls(LTD_Name).Caption=Bran_ch ”开始内存占有率开始升高,到“drpGas_Money.Show”达到本次最高。关闭报表窗口drpGas_Money后内存占有率没降低,如果再次查询预览,内存占有率继续升高,.多次之后内存溢出! 郁闷啊,找不到解决办法。 现在暂时只能让用户每次预览报表的时候都

20、监控内存占有率,快到的时候退出软件再进入。 - 用了数据环境?这个就不清楚了,DataReport很少使用,用的时候都是用ADO连接,不用DE,而且数据量不是很大,没有发现楼主的问题- 测试结果: setdataenvironment=nothing(数据环境) setmyRpt_money=nothing(报表) 已占用的内存没有减少,继续打开报表内存依旧在递增(XP任务管理器中的PF使用率显示结果) 看来要从VB清理内存着手了。- 在所有有关的事件里面 SetyouRptName=Nothing- 没遇见过这样的情况,试试: PrivateSubDataReport_QueryClose(

21、CancelAsInteger,CloseModeAsInteger) SetyouRptName=Nothing EndSub- 考虑把rs关闭掉,再释放掉。- 使用Data Report打印查询结果-vb教程点击: 发布日期:2007-4-19 15:35:21 进入论坛 P 如果我们想把查询结果打印出来,那么我们经常用到Data Report,在这里我说的是直接用记录集rs给Data Report设数据源。为了快速将查询结果中的字段加入到Data Report,我们先来建一个DataEnvironment1,设置好DataEnvironment1中的Connection1的连接,然后在D

22、ataEnvironment1中的Connection1中右键添加子命令Command1,在Command1上右键,属性,选择SQL语句,将我们的查询语句写进去,确定,完毕后就可以看到我们希望显示的字段了。如果需要,可以添加多个子命令。然后新建一个DataReport1,点住DataEnvironment1中的Command1不放,直接拖到DataReport1中的细节区,然后再根据需要调整各字段位置就行了。注意要将细节区中的各个textbox的DataMember置空。然后在程序里面写代码就可以了。如Dim rsdr As New ADODB.RecordsetSet rsdr = Conn.Execute(sqlall) Set drqueryall.DataSource = rsdrdrqueryall.ShowVisual Basic通用报表设计小结 2005-10-08 10:39:32 来源: 天极网文章导读本文对vb设计报表的方法作了一个小结,大家都知道,在VB平台下制作报表大致有两种选择:使用VB自带的Data Report控件和借助第三方软件。其中第三方软件比较著名的就是MS Excel和Seagate公司的Cr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1