VB6中动态设置报表结果
在VB6的报表使用过程中,我们会发现这样的一个问题,那就是报表中的数据只能读一次,不管你的库中字段增加也好,删除也好,以及让它显示新的查询结果等,它都不会记变。经过查资料才搞清楚,原来是DataEnvironment的问题.原来,只要Command对象中含有数据记录集合,它就不会重新执行SQL语句,就算是把新的查询语句给DataEnvironment后它也不会执行,解决的方法为:先把数据记录集合关闭,然后执行SQL语句,如下例:
PrivateSubCommand11_Click()
OnErrorResumeNext
DimsqlAsString
sql="select*fromsaledate"
IfDataEnvironment1.rsCommand1.State<>adStateClosedThen
DataEnvironment1.rsCommand1.Close
EndIf
IfRight$(Trim$(App.Path),1)="\"Then
DataEnvironment1.Connection1.OpenApp.Path&"jxck.mdb"
Else
DataEnvironment1.Connection1.OpenApp.Path&"\jxck.mdb"
EndIf
DataEnvironment1.rsCommand1.Opensql
SetDataReport1.DataSource=DataEnvironment1
DataReport1.DataMember="command4"
'DataReport1.Title="出库明细总表"
DataReport1.Show
EndSub
这样的话报表中显示的内容就可以是查询结果了。
对于分组报表,也可以这样:
如:
PrivateSubCommand11_Click()
OnErrorResumeNext
'DimsqlAsString
'sql="select*fromsaledategroupby分组字段名"
IfDataEnvironment1.command4_分组.State<>adStateClosedThen
DataEnvironment1.rsCommand4_分组.Close
EndIf
IfRight$(Trim$(App.Path),1)="\"Then
DataEnvironment1.Connection1.OpenApp.Path&"jxck.mdb"
Else
DataEnvironment1.Connection1.OpenApp.Path&"\jxck.mdb"
EndIf
DataEnvironment1.rsCommand4.Opensql
SetDataReport4.DataSource=DataEnvironment1
DataReport4.DataMember="command4_分组"
'DataReport1.Title="出库明细总表"
DataReport4.Show
EndSub
注意要在SQL语句中含有分组关建字"groupby"就可以了。
以上代码对于要改变DataEnvironment中的记录集同样适用.
以上代码在VB6.0,Win98上调试通过.
如有问题请与我联系.
张振兴(星云)
邮箱:xingyun0615@sina.com
Oicq:4487877
- 最新文章
- 在VB5中将英文字母及阿拉伯数字旋转任意角度[04-17]
- 在VB中实现移动没有标题栏的窗口[04-17]
- 在Windows操作系统中改变文件打开方式[04-17]
- 翻转一个字符串[04-17]
- 用VB捕捉屏幕图象[04-17]
- VisualBasic属性、方法和事件二[04-17]
- 相关文章
- 用VB实现全屏幕图形界面及动态功能提示[04-17]
- 在VB6.0中实现动态统计报表[04-17]
- 设置对VisualBasic数据库连接的动态路径[04-17]
- VB调用C程序动态链接库的方法[04-17]
- VB中实现同一窗口的多个实例及控件的动态增减[04-17]
- 创建动态图标[04-17]
