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


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

主题:多栏式会计账

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/23 23:26:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:20210623.png
图片点击可在新窗口打开查看
我想把由统计表生成的统计列自动行宽,即与S集合对应数组名称的列自动列宽,我这样写得出截图的效果,要控制的列并没平均自动列宽。
    Dim s As String = ""
    For Each c As Col In .Cols
        If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" OrElse c.name = "合计" Then
            e.Cancel = True
        Else
            s = s & "," & c.name
        End If
    Next
    Dim ct As WinForm.Table = e.Form.Controls("Table1")
    Dim t As Table = ct.Table
    Dim str As String
    Dim w As Integer = 0
    For Each c As Col In t.Cols
        If c.Visible Then
            If s.Contains(c.Name) Then
                str = str & "|" & c.Name & "|[width]"
            Else
                If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" Then
                    str = str & "|" & c.Name & "|35"
                    w + = 35
                ElseIf c.Name = "摘要" Then
                    str = str & "|" & c.Name & "|300"
                    w + = 300
                ElseIf c.Width = -1 Then
                    str = str & "|" & c.Name & "|60"
                    w + = 60
                End If
            End If
        End If
    Next
    Dim w2 As Integer = (ct.Width - w) / s.Count
    str = str.trim("|").Replace("[width]",w2)
    t.SetColVisibleWidth(str)

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 9:28:00 [显示全部帖子]

完整的代码改为这样也一样效果:
With Tables("多栏式明细账_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
    Dim g As Subtotalgroup
    .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 [一级科目] = '" & e.Form.Controls("combobox1").Value & "'"
    dt = cmd.ExecuteReader()
    Dim b As New CrossTableBuilder("统计表1",dt)
    b.HGroups.AddDef("日期",DateGroupEnum.Year,"年")
    b.HGroups.AddDef("日期",DateGroupEnum.Month,"月")
    b.HGroups.AddDef("日期",DateGroupEnum.Day,"日")
    b.HGroups.AddDef("字号")
    b.HGroups.AddDef("凭证号")
    b.HGroups.AddDef("摘要")
    b.VGroups.AddDef("二级科目","{0}")
    b.Totals.AddDef("借方金额","借方金额")
    b.HorizontalTotal = True
    b.OrderByTotal = True
    b.Build(True)
    .DataSource = b.BuildDataSource
    Dim s As String = ""
    For Each c As Col In .Cols
        If c.Name Like "借方金额_*" Then
            s = s & "," & c.name
        End If
    Next
    MessageBox.Show(s)
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.TotalOn = s.Trim(",")
    g.Caption = "本月发生额"
    .SubtotalGroups.Add(g)
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.Caption = "{0}月"
    .SubtotalGroups.Add(g)
    .Sort = "年,月"
    .Subtotal(True)
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1
        r = .Rows(i,True)
        If r.IsGroup AndAlso r("年") Like "*月" '如果是分组行
            Dim f As String = "年 = " & .Rows(i-2,True)("年") & " And 月 <= " & r("年").trim("月")
            r("年") = "本年累计"
            For Each c As Col In .Cols
                If c.name = c.Name Like "借方金额_*" Then
                    r(c.name) = .Compute("Sum(" & c.name & ")",f)
                End If
            Next
        End If
    Next
    Dim ct As WinForm.Table = e.Form.Controls("Table1")
    Dim t As Table = ct.Table
    Dim str As String
    Dim w As Integer = 0
    For Each c As Col In t.Cols
        If c.Visible Then
            If s.Trim(",").Contains(c.Name) Then
                str = str & "|" & c.Name & "|[width]"
            Else
                If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" Then
                    str = str & "|" & c.Name & "|35"
                    w + = 35
                ElseIf c.Name = "摘要" Then
                    str = str & "|" & c.Name & "|300"
                    w + = 300
                ElseIf c.Width = -1 Then
                    str = str & "|" & c.Name & "|60"
                    w + = 60
                End If
            End If
        End If
    Next
    Dim w2 As Integer = (ct.Width - w) / s.Trim(",").Count
    str = str.trim("|").Replace("[width]",w2)
    t.SetColVisibleWidth(str)
End With

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 10:37:00 [显示全部帖子]

写成红色代码报错,且没有了本年累计数据,改为下面黑字的代码直接报错不让保存,S已经定义了一次,重复定义了。
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.29.1
错误所在事件:窗口,多栏式明细账,Button1,Click
详细错误信息:
An item with the same key has already been added.





With Tables("多栏式明细账_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
    Dim g As Subtotalgroup
    .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 [一级科目] = '" & e.Form.Controls("combobox1").Value & "'"
    dt = cmd.ExecuteReader()
    Dim b As New CrossTableBuilder("统计表1",dt)
    b.HGroups.AddDef("日期",DateGroupEnum.Year,"年")
    b.HGroups.AddDef("日期",DateGroupEnum.Month,"月")
    b.HGroups.AddDef("日期",DateGroupEnum.Day,"日")
    b.HGroups.AddDef("字号")
    b.HGroups.AddDef("凭证号")
    b.HGroups.AddDef("摘要")
    b.VGroups.AddDef("二级科目","{0}")
    b.Totals.AddDef("借方金额","借方金额")
    b.HorizontalTotal = True
    b.OrderByTotal = True
    b.Build(True)
    .DataSource = b.BuildDataSource
    Dim s As String = ""
    For Each c As Col In .Cols
        If c.Name Like "借方金额_*" Then
            s = s & "," & c.name
        End If
    Next
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.TotalOn = s.Trim(",")
    g.Caption = "本月发生额"
    .SubtotalGroups.Add(g)
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.Caption = "{0}月"
    .SubtotalGroups.Add(g)
    .Sort = "年,月"
    .Subtotal(True)
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1
        r = .Rows(i,True)
        If r.IsGroup AndAlso r("年") Like "*月" '如果是分组行
            Dim f As String = "年 = " & .Rows(i-2,True)("年") & " And 月 <= " & r("年").trim("月")
            r("年") = "本年累计"
            For Each c As Col In .Cols
                If c.name = c.Name Like "借方金额_*" Then
                    r(c.name) = .Compute("Sum(" & c.name & ")",f)
                End If
            Next
        End If
    Next

    Dim sa As String = "年|35|月|30|日|30|字号|30|凭证号|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 - 30 * 4 - 300 - 60) / (t .cols.Count-7)
    If w2 > 0 Then
        For Each c As Col In .Cols
            str = str & "|" & c.name & "|" & w2
        Next
        sa = sa.replace("[其它]",str.trim("|"))
        t.SetColVisibleWidth(sa)
    End If

    Dim s As String = "年|35|月|30|日|30|字号|30|凭证号|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 - 30 * 4 - 300 - 60) / (t .cols.Count-7)
    If w2 > 0 Then
        For Each c As Col In .Cols
            str = str & "|" & c.name & "|" & w2
        Next
        s = sa.replace("[其它]",str.trim("|"))
        t.SetColVisibleWidth(s)
    End If
End With
[此贴子已经被作者于2021/6/24 10:54:41编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 11:08:00 [显示全部帖子]

还是一样报错,本年累计数据不见了!
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.29.1
错误所在事件:窗口,多栏式明细账,Button1,Click,
详细错误信息:
An item with the same key has already been added.

With Tables("多栏式明细账_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
    Dim g As Subtotalgroup
    .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 [一级科目] = '" & e.Form.Controls("combobox1").Value & "'"
    dt = cmd.ExecuteReader()
    Dim b As New CrossTableBuilder("统计表1",dt)
    b.HGroups.AddDef("日期",DateGroupEnum.Year,"年")
    b.HGroups.AddDef("日期",DateGroupEnum.Month,"月")
    b.HGroups.AddDef("日期",DateGroupEnum.Day,"日")
    b.HGroups.AddDef("字号")
    b.HGroups.AddDef("凭证号")
    b.HGroups.AddDef("摘要")
    b.VGroups.AddDef("二级科目","{0}")
    b.Totals.AddDef("借方金额","借方金额")
    b.HorizontalTotal = True
    b.OrderByTotal = True
    b.Build(True)
    .DataSource = b.BuildDataSource
    Dim s As String = ""
    For Each c As Col In .Cols
        If c.Name Like "借方金额_*" Then
            s = s & "," & c.name
        End If
    Next
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.TotalOn = s.Trim(",")
    g.Caption = "本月发生额"
    .SubtotalGroups.Add(g)
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.Caption = "{0}月"
    .SubtotalGroups.Add(g)
    .Sort = "年,月"
    .Subtotal(True)
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1
        r = .Rows(i,True)
        If r.IsGroup AndAlso r("年") Like "*月" '如果是分组行
            Dim f As String = "年 = " & .Rows(i-2,True)("年") & " And 月 <= " & r("年").trim("月")
            r("年") = "本年累计"
            For Each c As Col In .Cols
                If c.name = c.Name Like "借方金额_*" Then
                    r(c.name) = .Compute("Sum(" & c.name & ")",f)
                End If
            Next
        End If
    Next
    Dim sa As String = "年|35|月|30|日|30|字号|30|凭证号|35|摘要|300|[其它]|合计|60"
    Dim ct As WinForm.Table = e.Form.Controls("Table1")
    Dim t As Table = ct.Table
    Dim str As String
    Dim w As Integer = 0
    Dim w2 As Integer = (ct.Width - 35 - 30 * 4 - 300 - 60) / (t .cols.Count-7)
    If w2 > 0 Then
        For Each c As Col In .Cols
            If c.name = "年" Then
                str = str & "|" & c.Name & "|35"
                w + = 35
            ElseIf c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" Then
                str = str & "|" & c.Name & "|30"
                w + = 30
            ElseIf c.Name = "摘要" Then
                str = str & "|" & c.Name & "|300"
                w + = 300
            ElseIf c.Width = -1 Then
                str = str & "|" & c.Name & "|60"
                w + = 60
            Else
                str = str & "|" & c.name & "|" & w2
            End If
        Next
        sa = sa.replace("[其它]",str.trim("|"))
        t.SetColVisibleWidth(sa)
    End If
End With

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 11:20:00 [显示全部帖子]

改回我昨晚的代码,本年累计出现了,还是一样报错!应该是重复了红色代码的内容了。
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.29.1
错误所在事件:窗口,多栏式明细账,Button1,Click,
详细错误信息:
An item with the same key has already been added.


With Tables("多栏式明细账_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
    Dim g As Subtotalgroup
    .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 [一级科目] = '" & e.Form.Controls("combobox1").Value & "'"
    dt = cmd.ExecuteReader()
    Dim b As New CrossTableBuilder("统计表1",dt)
    b.HGroups.AddDef("日期",DateGroupEnum.Year,"年")
    b.HGroups.AddDef("日期",DateGroupEnum.Month,"月")
    b.HGroups.AddDef("日期",DateGroupEnum.Day,"日")
    b.HGroups.AddDef("字号")
    b.HGroups.AddDef("凭证号")
    b.HGroups.AddDef("摘要")
    b.VGroups.AddDef("二级科目","{0}")
    b.Totals.AddDef("借方金额","借方金额")
    b.HorizontalTotal = True
    b.OrderByTotal = True
    b.Build(True)
    .DataSource = b.BuildDataSource
    Dim s As String = ""
    For Each c As Col In .Cols
        If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" OrElse c.name = "合计" Then
            e.Cancel = True
        Else
            s = s & "," & c.name
        End If
    Next
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.TotalOn = s.Trim(",")
    g.Caption = "本月发生额"
    .SubtotalGroups.Add(g)
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.Caption = "{0}月"
    .SubtotalGroups.Add(g)
    .Sort = "年,月"
    .Subtotal(True)
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1
        r = .Rows(i,True)
        If r.IsGroup AndAlso r("年") Like "*月" '如果是分组行
            Dim f As String = "年 = " & .Rows(i-2,True)("年") & " And 月 <= " & r("年").trim("月")
            r("年") = "本年累计"
            For Each c As Col In .Cols
                If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" OrElse c.name = "合计" Then
                    e.Cancel = True
                Else
                    r(c.name) = .Compute("Sum(" & c.name & ")",f)
                End If
            Next
        End If
    Next
    Dim sa As String = "年|35|月|30|日|30|字号|30|凭证号|35|摘要|300|[其它]|合计|60"
    Dim ct As WinForm.Table = e.Form.Controls("Table1")
    Dim t As Table = ct.Table
    Dim str As String
    Dim w As Integer = 0
    Dim w2 As Integer = (ct.Width - 35 - 30 * 4 - 300 - 60) / (t .cols.Count-7)
    If w2 > 0 Then
        For Each c As Col In .Cols
            If c.name = "年" Then
                str = str & "|" & c.Name & "|35"
                w + = 35
            ElseIf c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" Then
                str = str & "|" & c.Name & "|30"
                w + = 30
            ElseIf c.Name = "摘要" Then
                str = str & "|" & c.Name & "|300"
                w + = 300
            ElseIf c.Width = -1 Then
                str = str & "|" & c.Name & "|60"
                w + = 60
            Else
                str = str & "|" & c.name & "|" & w2
            End If
        Next
        sa = sa.replace("[其它]",str.trim("|"))
        t.SetColVisibleWidth(sa)
    End If
End With

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 11:41:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210624113958.png
图片点击可在新窗口打开查看
直接报错

    Dim ct As WinForm.Table = e.Form.Controls("Table1")
    Dim t As Table = ct.Table
    Dim str As String
    Dim w As Integer = 0
    Dim w2 As Integer = (ct.Width - 35 - 30 * 4 - 300 - 60) / (t .cols.Count-7)
    If w2 > 0 Then
        For Each c As Col In .Cols
            If c.name = "年" c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" OrElse c.name = "合计" Then
            Else
                str = str & "|" & c.name & "|" & w2
            End If
        Next
        sa = sa.replace("[其它]",str.trim("|"))
        t.SetColVisibleWidth(sa)
    End If
End With

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 11:59:00 [显示全部帖子]

开始都提示这代码错:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210624115801.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 12:00:00 [显示全部帖子]

不要最后的then也一样

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/24 13:13:00 [显示全部帖子]

已经解决了。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/7/4 16:46:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:070401.png
图片点击可在新窗口打开查看
我想把贷方金额引用到统计表中,红色标注代码并没执行,不能直接用把贷方金额摆到统计表中生成,如果摆进去,就要把它变成负数,我试过摆进去,结果不是我要的效果。
With Tables("多栏式明细账_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
    Dim g As Subtotalgroup
    .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 [会计科目] = '" & e.Form.Controls("combobox1").Value & "'"
    dt = cmd.ExecuteReader()
    Dim b As New CrossTableBuilder("统计表1",dt)
    b.HGroups.AddDef("日期",DateGroupEnum.Year,"年")
    b.HGroups.AddDef("日期",DateGroupEnum.Month,"月")
    b.HGroups.AddDef("日期",DateGroupEnum.Day,"日")
    b.HGroups.AddDef("字号")
    b.HGroups.AddDef("凭证号")
    b.HGroups.AddDef("摘要")
    b.VGroups.AddDef("二级科目","{0}")
    b.Totals.AddDef("借方金额","借方金额")
    b.Build(True)
    .DataSource = b.BuildDataSource
    Dim ckb As DataTable = e.Form.Controls("Table1").Table.DataTable
    If ckb.DataCols.Contains("借方金额") = False And ckb.DataCols.Contains("贷方金额") = False Then
        ckb.DataCols.add("借方金额", Gettype(Double))
        ckb.DataCols.add("贷方金额", Gettype(Double))
    End If
    DataTables("多栏式明细账_Table1").DataCols("借方金额").SetFormat("#,###.##")
    DataTables("多栏式明细账_Table1").DataCols("贷方金额").SetFormat("#,###.##")
    For Each dr As DataRow In DataTables("多栏式明细账_Table1").DataRows
        Dim z As Double = 0
        For Each c As Col In .Cols
            Dim a As Double
            If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" OrElse c.name = "借方金额" OrElse c.name = "贷方金额" Then
                e.Cancel = True
            Else
                a = iif(dr.IsNull(c.name),0,dr(c.name))
                z = z + a
            End If
        Next
        dr("借方金额") = z
    Next
    Dim das As List(Of DataRow) = DataTables("多栏式明细账_Table1").Select("[年] Is Not Null And [月] Is Not Null And [日] Is Not Null")
    For Each da As DataRow In das
        Dim d As Date = New Date(da("年"),da("月"),da("日"))
        If da.IsNull("年") = False And da.IsNull("月") = False And da.IsNull("日") = False And da.IsNull("借方金额") Then
            da("贷方金额") = DataTables("财务数据源").Compute("Sum(贷方金额)","[日期] = #" & d & "# And [会计科目辅助列] = '管理费用' And [借或贷] = '贷'")
        End If
    Next
    Dim s As String = ""
    For Each c As Col In .Cols
        If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" Then
            e.Cancel = True
        Else
            s = s & "," & c.name
            DataTables("多栏式明细账_Table1").DataCols(c.name).SetFormat("#,###.##")
        End If
    Next
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.TotalOn = s.Trim(",")
    g.Caption = "本月发生额"
    .SubtotalGroups.Add(g)
    g = New Subtotalgroup
    g.GroupOn = "月"
    g.Caption = "{0}月"
    .SubtotalGroups.Add(g)
    .Sort = "年,月"
    .Subtotal(True)
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1
        r = .Rows(i,True)
        If r.IsGroup AndAlso r("年") Like "*月" '如果是分组行
            Dim f As String = "年 = " & .Rows(i-2,True)("年") & " And 月 <= " & r("年").trim("月")
            r("年") = "本年累计"
            For Each c As Col In .Cols
                If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" Then
                    e.Cancel = True
                Else
                    r(c.name) = .Compute("Sum(" & c.name & ")",f)
                End If
            Next
        End If
    Next
    Dim sa As String = "年|35|月|30|日|30|字号|35|凭证号|35|摘要|250|[其它]"
    Dim ct As WinForm.Table = e.Form.Controls("Table1")
    Dim t As Table = ct.Table
    Dim str As String
    Dim w As Integer = 0
    Dim w2 As Integer = (ct.Width - 35 * 3 - 30 * 2 - 250) / (t.cols.Count - 6)
    If w2 > 0 Then
        For Each c As Col In .Cols
            If c.name = "年" OrElse c.name = "月" OrElse c.name = "日" OrElse c.name = "字号" OrElse c.name = "凭证号" OrElse c.name = "摘要" Then
                e.Cancel = True
            Else
                str = str & "|" & c.name & "|" & w2
            End If
        Next
        sa = sa.replace("[其它]",str.trim("|"))
        t.SetColVisibleWidth(sa)
    End If
    .AutoSizeRows()
End With

 回到顶部
总数 28 上一页 1 2 3 下一页