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