Foxtable(狐表)用户栏目专家坐堂 → 多栏式会计账


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

主题:多栏式会计账

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/3 14:55:00 [显示全部帖子]

g = New Subtotalgroup

Subtotalgroup是汇总,汇总没有VGroups.AddDef这种用法

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/3 15:16:00 [显示全部帖子]

一年归一年的累计之前已经给过类似的用法,自行翻一下

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/3 15:35:00 [显示全部帖子]

请上传实例说明

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/3 16:52:00 [显示全部帖子]

下面代码是在命令窗口测试的,自己改回按钮的用法。可以打开生成的统计表1的表结构看看交叉统计生成的统计表列名是怎么样的,然后结合代码看看怎么处理这种列名

'对临时进行分组统计
Dim b As New CrossTableBuilder("统计表1",DataTables("财务数据源"))
b.HGroups.AddDef("日期",DateGroupEnum.Year,"年")
b.HGroups.AddDef("日期","月")
b.HGroups.AddDef("字号")
b.HGroups.AddDef("凭证号")
b.HGroups.AddDef("摘要")
b.VGroups.AddDef("二级科目","{0}")
b.Totals.AddDef("借方金额")
b.Build()
Dim a As Table = Tables("统计表1")
Dim g As Subtotalgroup
a.SubtotalGroups.Clear()
Dim s As String = ""
For Each c As Col In a.Cols
    If c.Name Like "借方金额_*"
        s = s & "," & c.Name
    End If
Next
g = New Subtotalgroup
g.GroupOn = "月"
g.TotalOn = s.Trim(",")
g.Caption = "本月发生额"
a.SubtotalGroups.Add(g)
g = New Subtotalgroup
g.GroupOn = "月"
g.Caption = "{0}月"
a.SubtotalGroups.Add(g)
a.Sort = "年,月"
a.Subtotal(True)
Dim r As Row
For i As Integer = 0 To a.Rows.Count(True) - 1
    r = a.Rows(i,True)
    If r.IsGroup AndAlso r("年") Like "*月" '如果是分组行
        Dim f As String = "年 = " & a.Rows(i-2,True)("年") & " And 月 <= " & r("年").trim("月")
        r("年") = "本年累计"
        For Each c As Col In a.Cols
            If c.Name Like "借方金额_*"
                r(c.Name) = a.Compute("Sum(" & c.Name & ")",f)
            End If
        Next
    End If
Next
Dim ckb As DataTable = a.DataTable
If ckb.DataCols.Contains("借或贷") = False And ckb.DataCols.Contains("借方合计") = False And ckb.DataCols.Contains("贷方合计") = False Then
    ckb.DataCols.add("借或贷", Gettype(String))
    ckb.DataCols.add("借方合计", Gettype(Double))
    ckb.DataCols.add("贷方合计", Gettype(Double))
End If

ckb.DataCols("借方合计").SetFormat("#,###.##")
ckb.DataCols("贷方合计").SetFormat("#,###.##")
a.SetHeaderRowHeight(45)



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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/3 17:20:00 [显示全部帖子]

打开生成的统计表1的表结构看看交叉统计生成的统计表真正列名是怎么样的,显示的都是标题

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/3 17:35:00 [显示全部帖子]

是列名:借方金额_1、借方金额_2、...

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/3 20:07:00 [显示全部帖子]

没看懂您的意思。自己的业务自己处理吧

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/4 13:49:00 [显示全部帖子]

到命令窗口单独执行下面代码,然后打开统计表1,打开表结构:http://www.foxtable.com/webhelp/topics/0193.htm,看看统计表真正的列名和标题名。不出意外,借方金额_1、借方金额_2、...才是列名,二级科目都是标题名,代码处理要使用列名

Dim b As New CrossTableBuilder("统计表1",DataTables("财务数据源"))
b.HGroups.AddDef("日期",DateGroupEnum.Year,"年")
b.HGroups.AddDef("日期","月")
b.HGroups.AddDef("字号")
b.HGroups.AddDef("凭证号")
b.HGroups.AddDef("摘要")
b.VGroups.AddDef("二级科目")
b.Totals.AddDef("借方金额")
b.Build()

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/24 10:08:00 [显示全部帖子]

Dim s As String = "年|35||35||35|字号|35|凭证号|35|摘要|300|[其它]|合计|60"

Dim ct As WinForm.Table = e.Form.Controls("Table1")
Dim t As Table = ct.Table
Dim str As String
Dim w2 As Integer = (ct.Width - 35*5-300-60) / (t .cols.Count-7)
if w2 > 0 then
For Each c As Col In .Cols
str = str & "|" & c.name & "|" & w2
next
s = s.replace("[其它]",str.trim("|"))
t.SetColVisibleWidth(s)
end if

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/24 10:47:00 [显示全部帖子]

        For Each c As Col In .Cols
if c.name = "" orelse c.name = "" orelse .........
else
            str = str & "|" & c.name & "|" & w2
end if
        Next

 回到顶部
总数 19 1 2 下一页