您的位置:首页 > 编程语言 > VB

VB6中动态设置报表结果

2011-12-23 09:08 211 查看
在VB6的报表使用过程中,我们会发现这样的一个问题,那就是报表中的数据只能读一次,不管你的库中字段增加也好,删除也好,以及让它显示新的查询结果 等,它都不会记变。经过查资料才搞清楚,原来是Data Environment 的问题.原来,只要Command 对象中含有数据记录集合,它就不会重新执行SQL 语句,就算是把新的查询语句给Data Environment 后它也不会执行,解决的方法为:先把数据记录集合关闭,然后执行SQL语句,如下例:

Private Sub Command11_Click()

On Error Resume Next

Dim sql As String

sql = "select * from saledate"

If DataEnvironment1.rsCommand1.State <> adStateClosed Then

DataEnvironment1.rsCommand1.Close

End If

If Right$(Trim$(App.Path), 1) = "\" Then

DataEnvironment1.Connection1.Open App.Path & "jxck.mdb"

Else

DataEnvironment1.Connection1.Open App.Path & "\jxck.mdb"

End If

DataEnvironment1.rsCommand1.Open sql

Set DataReport1.DataSource = DataEnvironment1

DataReport1.DataMember = "command4"

'DataReport1.Title = "出库明细总表"

DataReport1.Show

End Sub

这样的话报表中显示的内容就可以是查询结果了。

对于分组报表,也可以这样:

如:

Private Sub Command11_Click()

On Error Resume Next

'Dim sql As String

'sql = "select * from saledate group by 分组字段名"

If DataEnvironment1.command4_分组.State <> adStateClosed Then

DataEnvironment1.rsCommand4_分组.Close

End If

If Right$(Trim$(App.Path), 1) = "\" Then

DataEnvironment1.Connection1.Open App.Path & "jxck.mdb"

Else

DataEnvironment1.Connection1.Open App.Path & "\jxck.mdb"

End If

DataEnvironment1.rsCommand4.Open sql

Set DataReport4.DataSource = DataEnvironment1

DataReport4.DataMember = "command4_分组"

'DataReport1.Title = "出库明细总表"

DataReport4.Show

End Sub

注意要在SQL语句中含有分组关建字"group by "就可以了。

以上代码对于要改变Data Environment 中的记录集同样适用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql 记录 资料 Error 动态