Data Report 问题

fredcai 2001-02-22 07:42:00
Data Report 和数据库中一表绑定,第一次show Data Report 数据都正常,然后在表中增加一条记录,再次show Data Report 发现增加的记录没有显示,不知是什么原因,有没有办法解决?谢谢!
...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
listview 2001-02-23
  • 打赏
  • 举报
回复
可以直接用Requer方法,在DataRepore的Initialize
事件中写如下代码:
Private Sub DataReport_Initialize()
On Error Resume Next
DataEnvironment1.rsCommand1.Requery
End Sub
ukyoyj 2001-02-23
  • 打赏
  • 举报
回复
假设你的数据源是dm.Command1
只要做dm.Command1关闭再打开:
if dm.rsCommand1.State=adstateopen then dm.rsCommand1.Close
dm.Command1 [param...]
再datareport1.show


starwild 2001-02-23
  • 打赏
  • 举报
回复
假设你的DataReport1绑定到了DataEnvironment1.RsTable上面,在打开DataReport的时候
使用如下代码就能够解决问题:

Set rs = DataEnvironment1.RsTable
If rs.State = adStateOpen Then rs.Close
mysql = "SELECT……" '使用DataEnvironment1.RsTable同样的SQL查询语句
Set conn = DataEnvironment1.Spares
rs.Open mysql, conn, adOpenDynamic, adLockReadOnly
DataReport1.Show

这样,每次打开的都是经过刷新的DataReport了。以上代码经我在VB6.0和SQL SERVER中
使用,没一点问题。
a_gui 2001-02-23
  • 打赏
  • 举报
回复
不好意思,有一个错误!!
'---------------------------------
'然后重新组织记录集
With rpt_denv.Commands("cmdreport2")
.CommandText = sql_temp '--sql命令
.Execute
End With
'----------------------------------

sql_temp是一个选择命令
a_gui 2001-02-23
  • 打赏
  • 举报
回复
老兄,摆平了吗???
我曾经也遇到此类问题!!!试一试如下方法!!
问题出在你原来报表的记录源没有被更新

'首先判断一下记录源的状态
With devReportData.rscmdReport2
If .State = adStateOpen Then
.Close
End If
End With

'然后重新组织记录集
With rpt_denv.Commands("stuff_now")
.CommandText = sql_temp '--sql命令
.Execute
End With

'再显示报表
rscmdReport2.Show '--显示报表

一定ok!!!!

(呵呵!!可以麻烦了点)
playyuer 2001-02-23
  • 打赏
  • 举报
回复
DataReport的内容不随数据库的内容变化
http://www4.netease.com/~askpro/msg19/qa74.htm



Requery方 法 !
也 可 以 直 接 使 用 ADODB.Recordset!不 使 用 DataEnvironment!例 :
...
public adoRecordsetX as ADODB.Recordset
...

Private Sub DataReport_Initialize()
adoRecordsetX.Requery
Set DataReport1.DataSource = adoRecordsetX '设 置 DataReport 的 数 据 源
...
'绑 定 某 字 段
Me.Sections.Item("Section1").Controls.Item("text1").DataField=adoRecordsetX.Fields.Item(0).Name
...
End Sub
wuxiaoqiang的 意 见 :
在 你 们 有 关 上 述 问 题 的 回 答 , 我 想 再 增 加 一 种 更 简 单 的 解 决 办 法 。
1.在 datareport 报 表 中 设 置 datamember和 datasource为 空 。
2.将 以 前 绑 定 的 RptTextBox的 datamember设 为 空 , 保 留 原 来 的 datafield.
3.在 打 印 操 作 中 增 加 以 下 代 码 :
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" + App.path + "\finance.mdb" + ";"

Set tb = New Recordset
tb.Open "select * from dailyfeeprint", db, adOpenStatic, adLockOptimistic
With tb

.AddNew
![工 号 ] = Combo1(0).Text
![姓 名 ] = txtFields(0).Text
![交 费 日 期 ] = txtFields(1).Text
.........
.Update
End With

Set data1.Recordset = tb

Set datareport1.DataSource = data1
datareport1.Show
datareport1.PrintReport
其 实 这 个 问 题 也 搞 得 我 很 头 疼 , 希 望 能 让 其 他 人 不 再 头 疼 。
herycom的 意 见 :
直 接 Requery 一 下 就 可 以 了 。
Private Sub DataReport_Initialize()
DataEnvironment1.rsCommand1.Requery
End Sub
hfamwu 2001-02-23
  • 打赏
  • 举报
回复
可以在 data report 的 DataReport_Initialize() 事件中加入下面的语句:

devReportData.rscmdReport2.Refresh
fredcai 2001-02-23
  • 打赏
  • 举报
回复
千万帮忙回答,事关重大!

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧