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


  共有3368人关注过本帖平板打印复制链接

主题:多栏式会计账

美女呀,离线,留言给我吧!
采菊东篱下
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
多栏式会计账  发帖心情 Post By:2021/6/3 14:51:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210603144544.png
图片点击可在新窗口打开查看
这样的数据源结构,(注:截图上没有管理费用,现在是编代码,暂不纠结具体数据。)
做成这样的结构:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210603143527.png
图片点击可在新窗口打开查看
统计数据源表一级科目为管理费用、安二级科目作列表项目的借方金额,并计算出本月发生额,本年累计,第一张统计表中的借方合计为本行合计,贷方合计等于借方本月发生额(即本月的借方合计总额)。
我看过交叉统计方法,做了一下,红色标注报错:
Dim a As Table = Tables("多栏式明细账_Table1")
Dim drs As List(Of DataRow) = DataTables("财务数据源").Select("[日期] >= #" & e.Form.Controls("StartDate").Value & "# And [日期] <= #" & e.Form.Controls("EndDate").Value & "# And [会计科目辅助列] ='" & e.form.controls("combobox1").items(0) & "'")
Dim g As Subtotalgroup
a.SubtotalGroups.Clear()
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "Select 日期,字号,凭证号,摘要,二级科目,借方金额,贷方金额 fr om {财务数据源} Where [日期] >= #" & e.Form.Controls("StartDate").Value _
& "# And [日期] <= #" & e.Form.Controls("EndDate").Value & "# And [凭证号] ='" & drs("凭证号") & "'And [会计科目辅助列] <>'" & e.Form.Controls("combobox1").Value & "'"
dt = cmd.ExecuteReader()
'对临时进行分组统计
Dim b As New CrossTableBuilder("统计表1",dt)
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(True)
Tables("多栏式明细账_Table1").DataSource = b.BuildDataSource
g = New Subtotalgroup
g.GroupOn = "月"
g.VGroups.AddDef("二级科目","{0}")
g.TotalOn = "借方金额"
g.Caption = "本月发生额"
a.SubtotalGroups.Add(g)
g = New Subtotalgroup
g.GroupOn = "月"
g.VGroups.AddDef("二级科目","{0}")
g.Totals.AddDef("借方金额")
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("年") = "本年累计"
        r("借方金额") = a.Compute("Sum(借方金额)",f)
    End If
Next
Dim ckb As DataTable = e.Form.Controls("Table1").Table.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
Dim drs As List(Of DataRow) = DataTables("多栏式明细账_Table1").Select("[凭证号] Is Not Null")
Dim nms As List(Of String) = DataTables("财务数据源").SQLGetUniqueValues("[会计科目辅助列] ='" & e.form.controls("combobox1").items(0) & "' And [日期] >= #" & e.Form.Controls("StartDate").Value & "# And [日期] <= #" & e.Form.Controls("EndDate").Value & "#" ,"二级科目")
Dim Sum As Integer
For Each nm As String In nms
    Sum = Sum + drs(0)(nm)
    DataTables("多栏式明细账_Table1").DataCols(nm).SetFormat("#,###.##")
Next
DataTables("多栏式明细账_Table1").DataCols("借方合计").SetFormat("#,###.##")
DataTables("多栏式明细账_Table1").DataCols("贷方合计").SetFormat("#,###.##")
Tables("多栏式明细账_Table1").SetHeaderRowHeight(45)
drs(0)("借或贷") = "借"
drs(0)("借方合计") = Sum

[此贴子已经被作者于2021/6/3 14:51:28编辑过]

 回到顶部
总数 45 1 2 3 4 5 下一页