VB数据报表data reportWord文档格式.docx

上传人:b****3 文档编号:17036392 上传时间:2022-11-28 格式:DOCX 页数:14 大小:93.44KB
下载 相关 举报
VB数据报表data reportWord文档格式.docx_第1页
第1页 / 共14页
VB数据报表data reportWord文档格式.docx_第2页
第2页 / 共14页
VB数据报表data reportWord文档格式.docx_第3页
第3页 / 共14页
VB数据报表data reportWord文档格式.docx_第4页
第4页 / 共14页
VB数据报表data reportWord文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

VB数据报表data reportWord文档格式.docx

《VB数据报表data reportWord文档格式.docx》由会员分享,可在线阅读,更多相关《VB数据报表data reportWord文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

VB数据报表data reportWord文档格式.docx

.open打开想输出的数据库数据项以便输出

endwith

with报表名

 .datasource=数据环境

 .datamember=command名这两行也可固定设好而不必每次设置

 设置页表头部分(rpttlabel…为报表控件名)

 .sections

(2).controls("

rptlabelpage"

).caption="

共%p页第%p页"

rptlabeldate"

打印日期:

%d"

 .sections(3).controls("

rptlabel1"

).left=…

 …

 设置细节部分(rptshapex、rpttextboxx为报表控件名)

rptshape1"

).top=…

).height=…

).width=…

rpttextbox1"

).datamember=command名

).datafield=字段1

).font.name=…

rptshapen"

).visible=false

rpttextboxn"

 .sections(3).height=计算出的或固定的细节高度

动态调整报表标题(rptlabeltitle为报表标签控件名)

 .sections

(2).controls("

rptlabeltitle"

).alignment=…

 调整完毕后

 .show或.printreport

  这样做的优点是报表设计时简单,调整方便、随意,只需更改一点代码,而不必为了一点点的修改而费神的在设计窗口调整半天。

 

------------------------------------------------------------------------------------

原因找到了,灵感来自“vbman2003 

”的赋值!

处理办法:

原来报表窗体中的DataSource选中的是“DE”,现在去掉,改用赋值的方法:

Set 

myRpt.DataSource 

DE。

测试结果:

内存再也没递增了,而且查询出报表速度奇快!

好象看过MSDN,,一般情况下rpt关闭后会自动释放报表对象。

我想你的情况可能是二个,一是用了DE,不过这个只是推测,因为没有用过这个,或者是用法上有问题。

二是你是在窗体相关事件中设置和绑定报表数据源的,个人认为更恰当的用法应该是放在DataReport_Initialize事件中。

个人看法,不一定正确,只供参考。

好建议!

估计出报表的速度会大大提高。

我把代码交给搭档研究,还望多多指教!

你这个CRAXDDRT.Application 

释放了么

还有这个 

CRAXDDRT.Report

不要用DE,改用ADO吧,测试了一下,用ADO返回10000多条数据,反复打开,内存始终在404-407M之间(同时运行其它程序)。

示例代码如下:

窗体上:

Private 

Sub 

cmdRptGroup_Click()

Dim 

rpt 

As 

New 

RptGroup

'

显示分组报表

rpt.Show

End 

Sub

报表代码:

Option 

Explicit

cn 

ADODB.Connection

rs 

ADODB.Recordset

DataReport_Initialize()

Sql 

String, 

strSql 

String

'

连接数据库(Access)

With 

cn

.Provider 

"

MSDataShape.1"

一定要这句

.Open 

Data 

Provider=Microsoft.Jet.OLEDB.4.0 

;

&

_

Source="

App.Path 

\db1.mdb;

Persist 

Security 

Info=False"

With

设置RptTextBox控件属性

分组标头,注意不要设置其DataMember属性

Me.Sections("

Section6"

).Controls("

text1"

).DataField 

gp"

细节标头,其中“miCmd”是分组名称

Section1"

text2"

iName"

).DataMember 

miCmd"

text3"

iCode"

text4"

RptGroup.Sections("

Section7"

text5"

分组合计

查询表:

SELECT 

FROM 

tb 

打开查询记录集

SHAPE 

{"

AS 

miCmd 

COMPUTE 

sum(miCmd.iCode) 

as 

iCode,miCmd 

BY 

gp'

rs.Open 

strSql, 

cn, 

adOpenStatic, 

adLockReadOnly

Me.DataSource 

rs

DataReport_QueryClose(Cancel 

Integer, 

CloseMode 

Integer)

If 

rs.State 

adStateOpen 

Then 

rs.Close

cn.State 

cn.Close

Nothing

.................. 

myRpt.Caption 

strDRPName

myRpt.Show 

1

myRpt 

drpGas_Money 

DE.CT.Close

DE 

代码修改后测试结果:

第一次运行预览报表内存PF使用率924MB

第二次 

973MB

第三次 

0.99GB

关闭程序(VB工程还开着)PF使用率降到826MB

毫无进展啊!

国庆期间的疑难问题啊!

dim 

new 

...................................

rpt.show 

set 

rpt=nothing 

报表的数据环境=nothing

报表窗口drpGas_Money也关闭了

内存还是释放不掉。

每运行一次增加约50M内存消耗,end后才释放。

rpt=nothing

在drpGas_Money的Form_Terminate里面把你定义的所有object都=nothing 

诸如此类

CRAXDDRT.Application

CRAXDDRT.report

内存还是没有释放!

1、生成EXE问题依旧。

(是用户先发现内存溢出的)

2、

这样试试:

再在datareport_initialize()事件中绑定数据

最后在DataReport_QueryClose中释放报表对象

试一下NEW:

drpGas_Money

rpt.show

关闭报表时释放对象

Integer) 

  Set 

Nothing 

sub

手边没有VB,测试不了。

你生成EXE后看看有没这样的情况.......

DE.CT.ConnectionString 

strCnn

DE.Commands("

gas_money"

).CommandText 

ChargeArre 

WHERE 

........"

strDRPName 

普通用户管道燃气抄度报表"

Rep_pay

drpGas_Money.Sections

(2).Controls("

LTD_Name"

).Caption 

Bran_ch

Report_Name"

=strDRPName 

drpGas_Money.Caption 

drpGas_Money.Show

监测结果:

从“drpGas_Money.Sections

(2).Controls("

”开始内存占有率开始升高,到“drpGas_Money.Show”达到本次最高。

关闭报表窗口drpGas_Money后内存占有率没降低,如果再次查询预览,内存占有率继续升高,.........多次之后内存溢出!

郁闷啊,找不到解决办法。

现在暂时只能让用户每次预览报表的时候都监控内存占有率,快到的时候退出软件再进入。

用了数据环境?

这个就不清楚了,DataReport很少使用,用的时候都是用ADO连接,不用DE,而且数据量不是很大,没有发现楼主的问题

data 

environment=nothing 

(数据环境)

myRpt_money=nothing 

(报表)

已占用的内存没有减少,继续打开报表内存依旧在递增(XP任务管理器中的PF使用率显示结果)

看来要从VB清理内存着手了。

在所有有关的 

事件里面

youRptName 

没遇见过这样的情况,试试:

Sub

考虑把rs关闭掉,再释放掉。

使用DataReport打印查询结果-vb教程

点击:

 

发布日期:

2007-4-1915:

35:

21 

进入论坛

P>

如果我们想把查询结果打印出来,那么我们经常用到DataReport,在这里我说的是直接用记录集rs给DataReport设数据源。

为了快速将查询结果中的字段加入到DataReport,我们先来建一个DataEnvironment1,设置好DataEnvironment1中的Connection1的连接,然后在DataEnvironment1中的Connection1中右键添加子命令Command1,在Command1上右键,属性,选择SQL语句,将我们的查询语句写进去,确定,完毕后就可以看到我们希望显示的字段了。

如果需要,可以添加多个子命令。

然后新建一个DataReport1,点住DataEnvironment1中的Command1不放,直接拖到DataReport1中的细节区,然后再根据需要调整各字段位置就行了。

注意要将细节区中的各个textbox的DataMember置空。

然后在程序里面写代码就可以了。

如DimrsdrAsNewADODB.Recordset

Setrsdr=Conn.Execute(sqlall)

Setdrqueryall.DataSource=rsdr

drqueryall.Show

VisualBasic通用报表设计小结

·

2005-10-0810:

39:

32·

来源:

天极网

[文章导读]本文对vb设计报表的方法作了一个小结,大家都知道,在VB平台下制作报表大致有两种选择:

使用VB自带的DataReport控件和借助第三方软件。

其中第三方软件比较著名的就是MSExcel和Seagate公司的Cr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

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

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