Foxtable(狐表)用户栏目专家坐堂 → 自动计算


  共有2060人关注过本帖树形打印复制链接

主题:自动计算

帅哥哟,离线,有人找我吗?
kaituozhe
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
自动计算  发帖心情 Post By:2018/1/18 7:48:00 [只看该作者]

以下代码是铖实现自动计算,为什么实现不了呢?黄色代码怎么修改?因为项目列合计行前面会一些空格。

Dim filter As String =  " 年度 = '" & e.DataRow("年度") & "' And 期间 = '" & e.DataRow("期间") & "'And 公司名称 = '" & e.DataRow("公司名称") & "'And 部门编号 = '" & e.DataRow("部门编号") & "'"
Select Case e.DataCol.name
    Case "数量","单价"
        e.DataRow("金额") = e.DataRow("数量") * e.DataRow("单价")
    Case "年度","期间"
        Dim drgh As DataRow = e.DataTable.find(filter & " And 项目 = '挂号收入'and 收入明细 like '%合计%'")
        'msgbox(2)
        If  drgh IsNot Nothing Then
            'msgbox(1)
            drgh("单价") = e.DataTable.Compute("sum(单价)",filter & " And 项目 = '挂号收入'and 收入明细 not like '%合计%'")
            drgh("数量") = e.DataTable.Compute("sum(数量)",filter & " And 项目 = '挂号收入'and 收入明细 not like '%合计%'")
            drgh("金额") = e.DataTable.Compute("sum(金额)",filter & " And 项目 = '挂号收入'and 收入明细 not like '%合计%'")
            'msgbox(drgh("单价"))
        End If
    Case "数量","单价","金额"
        If e.DataRow("收入明细") <> "合计" Then
            e.DataTable.DataCols("年度").RaiseDataColChanged(filter)
        End If
End Select

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目18.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/18 9:20:00 [只看该作者]

Dim filter As String =  " 年度 = '" & e.DataRow("年度") & "' And 期间 = '" & e.DataRow("期间") & "'And 公司名称 = '" & e.DataRow("公司名称") & "'And 部门编号 = '" & e.DataRow("部门编号") & "'"
Select Case e.DataCol.name
    Case "数量","单价"
           e.DataRow("金额") = e.DataRow("数量") * e.DataRow("单价")
    Case "年度","期间"
        Dim drgh As DataRow = e.DataTable.find(filter & " And 项目 = '挂号收入'and 收入明细 like '%合计%'")
        If  drgh IsNot Nothing Then
            drgh("单价") = e.DataTable.Compute("sum(单价)",filter & " And 项目 = '挂号收入'and (收入明细 not like '%合计%' or 收入明细 is null)")
            drgh("数量") = e.DataTable.Compute("sum(数量)",filter & " And 项目 = '挂号收入'and (收入明细 not like '%合计%' or 收入明细 is null)")
            drgh("金额") = e.DataTable.Compute("sum(金额)",filter & " And 项目 = '挂号收入'and (收入明细 not like '%合计%' or 收入明细 is null)")
        End If
End Select
Select Case e.DataCol.name
    Case "数量","单价","金额"
        If e.DataRow("收入明细") <> "合计" Then
            e.DataTable.DataCols("年度").RaiseDataColChanged(filter & " and 收入明细 like '%合计%'" )
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
kaituozhe
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2018/1/18 18:43:00 [只看该作者]

以下代码是统计代码,能否按部门增加小列,然后再合计

Forms("查询").open
Dim sql As String = "Sel ect 项目,金额,期间,收入明细,部门编号 FROM {门诊收入预算} where 收入明细 not like '总计'and 收入明细 not like '合计'and 项目 is not null"
Dim b As New CrossTableBuilder("统计表1",sql)
b.HGroups.AddDef("项目")
b.vGroups.AddDef("部门编号")
b.VGroups.AddDef("期间","{0}月")
b.Totals.AddDef("金额")
b.HorizontalTotal = True
b.VerticalTotal = True
b.Build()
Forms("查询").controls("table1").Table.DataSource = DataTables("统计表1")

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目18.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/18 19:57:00 [只看该作者]

Forms("查询").open
Dim sql As String = "Select 项目,金额,期间,收入明细,部门编号 FROM {门诊收入预算} where (收入明细 not like '总计'  or 收入明细 is null) and (收入明细 not like '%合计%' or 收入明细 is null) and 项目 is not null union all Select 项目,金额,'小计',收入明细,部门编号 FROM {门诊收入预算} where (收入明细 not like '总计'  or 收入明细 is null) and (收入明细 not like '%合计%' or 收入明细 is null) and 项目 is not null "
Dim b As New CrossTableBuilder("统计表1",sql)
b.HGroups.AddDef("项目")
b.vGroups.AddDef("部门编号")
b.VGroups.AddDef("期间","{0}月")
b.Totals.AddDef("金额")
b.HorizontalTotal = True
b.VerticalTotal = True
b.Build()
Forms("查询").controls("table1").Table.DataSource = DataTables("统计表1")

 回到顶部
帅哥哟,离线,有人找我吗?
kaituozhe
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2018/1/20 13:18:00 [只看该作者]

4楼代码计算出来的合计不等于各部门的合计数,而是等于该行的合计数,该怎么修改?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/20 14:28:00 [只看该作者]

Forms("查询").open
Dim sql As String = "Select 项目,金额,期间,收入明细,部门编号 FROM {门诊收入预算} where (收入明细 not like '总计'  or 收入明细 is null) and (收入明细 not like '%合计%' or 收入明细 is null) and 项目 is not null union all Select 项目,金额,'小计',收入明细,部门编号 FROM {门诊收入预算} where (收入明细 not like '总计'  or 收入明细 is null) and (收入明细 not like '%合计%' or 收入明细 is null) and 项目 is not null " 
Dim b As New CrossTableBuilder("统计表1",sql) 
b.HGroups.AddDef("项目")
b.vGroups.AddDef("部门编号")
b.VGroups.AddDef("期间","{0}月")
b.Totals.AddDef("金额") 
b.HorizontalTotal = True
b.VerticalTotal = True
b.Build()
For Each dr As DataRow In DataTables("统计表1").DataRows
    Dim sum As Double = 0
    For Each c As DataCol In DataTables("统计表1").DataCols
        If c.Caption Like "*小计*" Then sum += dr(c.Name)
    Next
    dr("合计") = sum
Next
Forms("查询").controls("table1").Table.DataSource = DataTables("统计表1")

 回到顶部