Foxtable(狐表)用户栏目专家坐堂 → 如何实现会计科目的分组汇总


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

主题:如何实现会计科目的分组汇总

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


加好友 发短信
等级:小狐 帖子:338 积分:2700 威望:0 精华:0 注册:2018/11/22 9:19:00
如何实现会计科目的分组汇总  发帖心情 Post By:2019/1/23 21:57:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:630cd9b54edc6fb659f05a3036fc795.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/1/23 23:20:39编辑过]

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


加好友 发短信
等级:小狐 帖子:338 积分:2700 威望:0 精华:0 注册:2018/11/22 9:19:00
  发帖心情 Post By:2019/1/23 23:12:00 [显示全部帖子]

请看示例
[此贴子已经被作者于2019/1/23 23:12:41编辑过]

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


加好友 发短信
等级:小狐 帖子:338 积分:2700 威望:0 精华:0 注册:2018/11/22 9:19:00
  发帖心情 Post By:2019/1/23 23:15:00 [显示全部帖子]

以下是引用nxhylczh在2019/1/23 23:12:00的发言:
请看示例
[此贴子已经被作者于2019/1/23 23:12:41编辑过]

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

项目的实际情况是  科目表  期初数表为外部表
科目期初数表是 一个填充表
[此贴子已经被作者于2019/1/23 23:19:14编辑过]

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


加好友 发短信
等级:小狐 帖子:338 积分:2700 威望:0 精华:0 注册:2018/11/22 9:19:00
  发帖心情 Post By:2019/1/23 23:22:00 [显示全部帖子]

'1010030202 的级数为4级

Dim kmbm_lenC() As String ={"101","101003","10100302","1010030202"} 

'假定现在在第8行 借方累计栏内输入 100
For js As Integer = 4 To 1 Step -1
    For CurRow As Integer =  Tables("期初数").Position  To 1 Step -1   '从当前行向上查找
        If Tables("期初数").Current("科目编码") = kmbm_lenC(js - 1) Then  '找到上级 10100302
             '汇总当前科目的下级科目 1010030202=1010030201+1010030202  第一次循环
            'Dim je As String = '汇总当前科目的下级科目 1010030202=1010030201+1010030202  第一次循环
            '更新 期初数  1010030202
            'Tables("期初数").Current(e.Col.Name) = je
            '表第六行 10100302 的借方累计=100+100
            Exit For
        End If
    Next
Next

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


加好友 发短信
等级:小狐 帖子:338 积分:2700 威望:0 精华:0 注册:2018/11/22 9:19:00
  发帖心情 Post By:2019/1/24 10:55:00 [显示全部帖子]

If e.Col.name = "借方累计" OrElse e.Col.name = "年初数" Then
    Dim bmgs As String = "3322"
    Dim bm As String = e.Row("科目编码")
    Dim idx As Integer = 0
    For i As Integer = 0 To bmgs.length-1
        idx += val(bmgs(i))
        If bm.length >= idx Then
            Dim s = bm.SubString(0, idx)
            Dim fdr As DataRow = e.Table.DataTable.find("科目编码 = '" & s & "' and 有下级 = true")
            If fdr IsNot Nothing
                fdr("借方累计") = e.Table.Compute("sum(借方累计)", "科目编码 like '" & s & "%' and 科目编码 <> '" & s & "'  and 有下级 = false")'
                fdr("年初数")= e.Table.Compute("sum(年初数)", "科目编码 like '" & s & "%' and 科目编码 <> '" & s & "'  and 有下级 = false")'
            End If
        End If
    Next
End If

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


加好友 发短信
等级:小狐 帖子:338 积分:2700 威望:0 精华:0 注册:2018/11/22 9:19:00
  发帖心情 Post By:2019/1/24 10:56:00 [显示全部帖子]

公开源代码,让有用的同行借鉴一下!(代码是版主写的)

 回到顶部