怎样统计DataReport中各字段值的合计??急

hnhjz 2004-10-07 04:32:34
比如如下所示:
字段1 字段2 字段3 字段4 字段5 合计
A B 120 100 255 ??

我想将上面中的“字段3—字段5”的值(可能有多个,所以要用循环)相加后,赋给合计下的LblTotalM。我用了如下的方法,不能解决,总是提示CDbl(rst.Fields(M))类型不匹配,因为rst.Fields(M)总为空值。
dim TotalM as double
TotalM = 0
For M = 2 To 5
TotalM = TotalM + CDbl(rst.Fields(M))
Next
Me.Sections.Item("Section1").Controls.Item("LblTotalM").Caption = TotalM

希望各位高手能帮忙解决这个问题,谢啦!!
...全文
162 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2004-10-07
  • 打赏
  • 举报
回复
你先要选择你感兴趣的社区
xinbin120 2004-10-07
  • 打赏
  • 举报
回复
我的“提问到...”是灰的 ,不能点哦
vbman2003 2004-10-07
  • 打赏
  • 举报
回复
TO: xinbin120()
发贴到相应的社区,点上方栏目中的“提问”就可以了
xinbin120 2004-10-07
  • 打赏
  • 举报
回复
靠,怎么发帖子呀,我等你半年了,大哥
vbman2003 2004-10-07
  • 打赏
  • 举报
回复
循环中要加 rst.MoveNext
另外合计用RptFunction控件就可以了
xinbin120 2004-10-07
  • 打赏
  • 举报
回复
关键在循环哦,你的循环要定义一个子程序!
xinbin120 2004-10-07
  • 打赏
  • 举报
回复
定义全局变量,用adodc一直刷新他选出来的一项,然后对这一项进行操作,Are you "ko"?
xinbin120 2004-10-07
  • 打赏
  • 举报
回复
怎么发帖啊,好难呀?!!!!!!!!!!!
hnhjz 2004-10-07
  • 打赏
  • 举报
回复
是这样的,上面有个end if 没有屏蔽,不好意思,再贴一次:
For N = 2 To 5
Me.Sections.Item("Section1").Controls.Item("Text" & N & "").DataField = rst.Fields(N - 1).Name
Next

'//统计合计
TotalM = 0
For M = 2 To I - 1
If rst.Fields(M) = "" Then
Mvalue = 0
Else
TotalM = TotalM + CDbl(rst.Fields(M))
End If
Next
Me.Sections.Item("Section1").Controls.Item("txtTotalM").DataField = rst.Fields(6).Name
hnhjz 2004-10-07
  • 打赏
  • 举报
回复
以上各位,好像都不行哟,因为在DataReport中提取rst.Fields(M),虽然可以返回值,但却都是第一条记录的值。所以显示报表时,如果是多条记录的话,则所有记录的合计都为同一个值。
For N = 2 To 5
Me.Sections.Item("Section1").Controls.Item("Text" & N & "").DataField = rst.Fields(N - 1).Name
End If
Next

'//统计合计
TotalM = 0
For M = 2 To I - 1
If rst.Fields(M) = "" Then
Mvalue = 0
Else
TotalM = TotalM + CDbl(rst.Fields(M))
End If
Next
Me.Sections.Item("Section1").Controls.Item("txtTotalM").DataField = rst.Fields(6).Name


照上面的程式,则显示的所有记录的最后一列合计都为同一个值。
xinbin120 2004-10-07
  • 打赏
  • 举报
回复
然后吧,这个直个这个text文本不就行了吗?
xinbin120 2004-10-07
  • 打赏
  • 举报
回复
不知道,估计是adodc1.recoutset.fields(0).values选出来付给一个变量,来个循环累加可能会搞定哦!
vbman2003 2004-10-07
  • 打赏
  • 举报
回复
晕了,上面还有错~~
Dim TotalM As double
Dim rstDub
TotalM = 0
For M = 2 To 5
If Not IsNull(rst.Fields(M)) Then
rstDub = rst.Fields(M)
Else
rstDub = 0
End If
TotalM = TotalM + CDbl(rstDub)
rst.MoveNext
Next
Me.Sections.Item("Section1").Controls.Item("LblTotalM").Caption = TotalM
vbman2003 2004-10-07
  • 打赏
  • 举报
回复
没看清,试试
Dim TotalM As double
Dim rstDub
TotalM = 0
For M = 2 To 5
If Not IsNull(rst.Fields(M)) Then
rstDub = rs!allow_rmb
Else
rstDub = 0
End If
TotalM = TotalM + CDbl(rstDub)
rst.MoveNext
Next
Me.Sections.Item("Section1").Controls.Item("LblTotalM").Caption = TotalM

vbman2003 2004-10-07
  • 打赏
  • 举报
回复
......
For M = 2 To 5
TotalM = TotalM + CDbl(rst.Fields(M))
rst.MoveNext
Next
......
hnhjz 2004-10-07
  • 打赏
  • 举报
回复
忘了说,说到底,我就是想得到DataReport中text显示的值。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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