以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自动计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113546)

--  作者:kaituozhe
--  发布时间: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


--  作者:有点甜
--  发布时间: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
--  发布时间: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


--  作者:有点甜
--  发布时间: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
--  发布时间:2018/1/20 13:18:00
--  
4楼代码计算出来的合计不等于各部门的合计数,而是等于该行的合计数,该怎么修改?
--  作者:有点蓝
--  发布时间: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")